Помогите м сортировкой БД

Тема в разделе "Базы данных", создана пользователем stasdre, 4 июн 2010.

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

    stasdre Постоялец

    Регистр.:
    15 янв 2010
    Сообщения:
    125
    Симпатии:
    18
    Есть таблица с заказами и вней есть поле `Status` - статус заказов, может принимать значения 1,2,3 или 4. Проблема в следующем: например есть 3 заказа со статусом 1, 2 co статусом 4 и 2 заказа со статусом 3:
    Код:
    id   Name       Status
    1    Заказ 1     1
    2    Заказ 2     1
    3    Заказ 3     1
    4    Заказ 4     4 
    5    Заказ 5     4
    6    Заказ 6     3
    7    Заказ 7     3
    
    Как можно отсортировать такую таблицу по статусам. Если по статусу 1 то можно написать ORDER BY Status, если по статусу 4 то ORDER BY Status DESC
    Как можно отсортировать по статусу 3? Так чтобы зыказы были в таком порядке:
    Код:
    Status
    3
    3
    1
    1
    1
    4
    4
    
    Подскажите кто знает как такое можно реализовать?:thenks:
     
  2. unsiker

    unsiker

    Регистр.:
    6 июн 2008
    Сообщения:
    465
    Симпатии:
    172
    чисто на sql врядли такое сделаешь, потому что ты изначально сортируешь не по статусу, а по каким то внутреним критериям. Да и вопрос не особо понятен.

    Select * From table_name WHERE Status = 3 ORDER BY Status
    Для статуса 4
    Select * From table_name WHERE Status = 4 ORDER BY Status DESC
     
    stasdre нравится это.
  3. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102

    ну и JOIN натянуть на все это. не?
     
  4. gre4a

    gre4a Создатель

    Регистр.:
    19 мар 2009
    Сообщения:
    10
    Симпатии:
    2
    вопрос действительно не понятен, видимо нужен определённый порядок статусов . т.к. у тебя их всего 4 то можешь использовать union, для твоего примера будет так :
    Select * From table_name WHERE Status = 3
    union all
    Select * From table_name WHERE Status = 1
    union all
    Select * From table_name WHERE Status = 4
     
  5. stasdre

    stasdre Постоялец

    Регистр.:
    15 янв 2010
    Сообщения:
    125
    Симпатии:
    18
    Вроде бы все понятно объяснил в итоге после запроса строки БД должны сортироваться в следующем порядке (по полю Status:(

    Код:
    id   Name       Status
    6    Заказ 6     3
    7    Заказ 7     3
    1    Заказ 1     1
    2    Заказ 2     1
    3    Заказ 3     1
    4    Заказ 4     4 
    5    Заказ 5     4
    
    Т.е. в нвчале идут строки со статусом 3 потом 4 и затем 1. Или например вот так:

    Код:
    id   Name       Status
    4    Заказ 4     4 
    5    Заказ 5     4
    1    Заказ 1     1
    2    Заказ 2     1
    3    Заказ 3     1
    6    Заказ 6     3
    7    Заказ 7     3
    
     
  6. polyetilen

    polyetilen Заблокирован

    Регистр.:
    10 авг 2006
    Сообщения:
    814
    Симпатии:
    474
    Код:
    SELECT * FROM zakazy ORDER BY Status=3 DESC, Status=1 DESC, Status=4 DESC, Status
    
     
    stasdre нравится это.
  7. vgvgvg

    vgvgvg Создатель

    Регистр.:
    16 июн 2010
    Сообщения:
    39
    Симпатии:
    1
    есть 100 способов это сделать.

    Например, создай таблицу сортировки статусов.
    sttus_sort
    Status Sort
    1 20
    2 30
    3 10
    4 40

    И пиши
    select t.*
    from table_name t,
    status_sort ss
    where t.status = ss.status
    order by ss.sort

     
Статус темы:
Закрыта.