Как выбрать данные из mysql и потом вывести их в нужном порядке

Тема в разделе "Базы данных", создана пользователем dandandan, 23 янв 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    Есть таблица:
    `id` int(10) NOT NULL auto_increment,
    `zagolovok` varchar(1000)
    Внутри ячейки `zagolovok` хранится
    Яйца, Мука, Хлеб, Фасоль.
    Как выбрать все элементы (Яйца, Мука, Хлеб, Фасоль) из таблицы и при этом при обходе элементов таблицы сделать первым Мука, а остальные не важно как дальше будут?
     
  2. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    Сделай сотрировку по полю 'zagolovok' и будет тебе счастьье.
    Код:
    SELECT * FROM table ORDER BY zagolovok;
     
  3. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    Так в этом случае он сортирует либо по алфавиту по возрастанию или по убыванию. А мне нужно из середины взять.
     
  4. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    590
    При сортировке по Яйца, Мука, Хлеб, Фасоль - Мука будет первой.

    Если надо выбирать ХЗ как, то 2-а запроса.
     
  5. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    Друг по аське подсказал. Может кому пригодиться
     
  6. Lucid_Mind

    Lucid_Mind Постоялец

    Регистр.:
    18 янв 2009
    Сообщения:
    72
    Симпатии:
    34
    select * from where [Zagolovok] = 'Мука';
    select * from
    where [Zagolovok] <> 'Мука';
    ---
     
  7. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267

    Клевая идея сам почему-то не додумался, а то сейчас возникла необходимость выводить уже не 1 элемент а несколько в начале, а потом все остальное.
     
  8. pavel012007

    pavel012007

    Регистр.:
    12 мар 2008
    Сообщения:
    210
    Симпатии:
    117
    Если требуется выводить элементы столбца (в данном случае `Zagolovok`) в каком то особом порядке, почему б не добавить в таблицу ещё одно поле - `ordr`INT, и для каждой записи проставить целое число, определяющее ваш порядок "особой" сортировки. Данные при выборе SEELCT'ом сортируются по столбцу ordr.
    Конечно, столбец ordr займёт в таблице доп.место, но данный подход зато универсальный для "особых" порядков сортировки.


    Код:
    SELECT * FROM tbl ORDER BY ordr;
    
     
  9. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    990
    Симпатии:
    267
    Не хотелось менять структуру БД (на ней уже висит несколько сайтов). Делаю универсальный движок под себя. Движок выполняет функции как инет магазина, так и обычного сайта. А включение и отключение магазина выполняется выставление переменной в true.
     
  10. pavel012007

    pavel012007

    Регистр.:
    12 мар 2008
    Сообщения:
    210
    Симпатии:
    117
    Имеется в виду "не хотелось менять структуру таблиц БД"?
    В этом случае структура таблиц БД пусть остаётся как сейчас. Создаёте ещё одну таблицу Ordrs (id_tbl:INT ordr:INT). Поле id_tbl - для связи с вашей Table (по Table.id). Поле Ordrs.ordr заполняете в соответствии с вашим критерием сортировки. В нужном месте составляете запрос к Table, связывая ее с созданной таблицей порядков Ordrs, упорядочивая ResultSet по Ordrs.ordr.
    Структура таблиц БД при этом остается без изменения.
     
Статус темы:
Закрыта.