За последние 24 часа нас посетили 17755 программистов и 1280 роботов. Сейчас ищут 1544 программиста ...

Сортировка записей в БД

Тема в разделе "PHP и базы данных", создана пользователем pr0n1x, 23 окт 2006.

  1. pr0n1x

    pr0n1x Активный пользователь

    С нами с:
    30 мар 2006
    Сообщения:
    486
    Симпатии:
    2
    Адрес:
    Киев
    В таблице у меня есть три поля:
    1. grading - может содержать значение 1 - 10
    2. last_active - содержит дату последней активации
    3. username - содержит если у пользователя агент (username - имя агента)

    Мне нужно, чтобы из базы данных данные выбирались в следующем порядке:

    Выбрать все записи, сначала те у которых grading больщий, потом если grading равен, выбирать у кого дата последней активации last_active больше.....и потом все это мне нужно отсортировать, чтобы сначала шли записи у которых username есть, а потом у которых его нет.


    Просто сначала записи у которых есть значение в поле username с полем grading от 10 до 1 , потом у которых нет значения в поле username с полем grading от 10 до 1.

    Помогите с запросом.
     
  2. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    тут проще в два захода:
    select * from yourtable where username<>'' order by grading desc, last_active desc
    select * from yourtable where username='' order by grading desc, last_active desc
     
  3. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    SELECT * FROM table ORDER BY ISNULL(username), grading DESC, last_active DESC;

    либо

    SELECT * FROM table ORDER BY grading DESC, last_active DESC, ISNULL(username);

    В зависимости от того как понимать
     
  4. AlexGousev

    AlexGousev Активный пользователь

    С нами с:
    25 мар 2006
    Сообщения:
    1.505
    Симпатии:
    0
    Адрес:
    Москва
    Интересная функция isnull - не знал. Век живи...
     
  5. Anonymous

    Anonymous Guest

    хм...
    Тоже не знал, что в MySQL есть.. у Oracle она кстати IS NULL - раздельно пишется...
     
  6. Mavir

    Mavir Guest

    IS NULL есть в MySQL и используется для сравнения на NULL. Например, `field` IS NULL.
    А ISNULL() функция, которая возращает 1 или 0, если аргумент NULL или не NULL соответственно.
     
  7. Anonymous

    Anonymous Guest

    Mavir, спасибо.