За последние 24 часа нас посетили 18055 программистов и 1652 робота. Сейчас ищут 1295 программистов ...

У меня проблема с GROUP BY и ORDER BY

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

  1. Овик

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

    С нами с:
    26 апр 2008
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Ерева
    Здравствуйте.
    Ребята у меня такого рода проблема и не как не могу понять почему же так :(
    Даю подобный запрос:

    Код (Text):
    1.  
    2. SELECT * FROM obmen_new WHERE pokazivat = '1' and admin_proveril = '1' and rabotaet = '1' GROUP BY site_id ORDER BY rating DESC
    Запрос простенький конечно, но проблема заключается в том, что когда я группирую (GROUP BY site_id) у меня уже не работает сортировка (ORDER BY rating DESC), когда убираю группировку сортировка работает. Как можно это обойти или сделать?
    Уже две неделю бьюсь с этой проблемой и не как не могу решить :(
    В реале запрос на много сложнее, но смысла нету его выкладывать так как даже при этом запросе он не сортирует :(
     
  2. Овик

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

    С нами с:
    26 апр 2008
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Ерева
    кстати в книжки MySQL автора Поль Дюбуа (может кто читал) я прочел, там есть несколько примеров и он пользуется таким образом. Вот с книжки пример:

    Код (Text):
    1.  
    2. SELECT student.student.id, student.name, SUM(score.score) AS total, COUNT(score.score) AS n FROM event, score, student WHERE event.event_id = score.event AND score.student_id = student.student_id GROUP BY score.student_id, student_id ORDER BY total;
    Вот этот пример, но как видете в сообщении выше это не работает, или я чего то не понимаю?
     
  3. Овик

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

    С нами с:
    26 апр 2008
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Ерева
    че не кто не знает? :(
     
  4. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Мускул напрасно обвиняешь ты.
    Спамишь тоже ты напрасно.

    Он сортируется. Если ты пишешь order by это не значит, что MySQL прочтёт мысли и отсортирует, как у тебя в голове. Он сортирует так, как надо: с учётом типа поля и т.д.
     
  5. Овик

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

    С нами с:
    26 апр 2008
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Ерева
    lexa
    ну разве там не написано, что бы он сортировал? разве ты в запросе видишь ошибку по которой он нормально может не отсортировать? если же нет, то, то что он сортирует я знаю... спасибо за много слов и не о чем...
     
  6. Goryn

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

    С нами с:
    4 апр 2006
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    Ярославль
    Сортировка при использовании GROUP BY применима только к тем значениям, которые возвращают групповые функции и к полям по которым производится группировка.
     
  7. lexa

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

    С нами с:
    22 июл 2007
    Сообщения:
    1.746
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Овик, на сарае тоже написано, а там дрова. Я тебе сказал, что мускул сортирует как считает правильно (учитывая типы полей и т.д.). Перечитай мой пост глазами, а не тем, чем обычно читаешь.

    http://dev.mysql.com/doc/
     
  8. Овик

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

    С нами с:
    26 апр 2008
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Ерева
    ясно спасибо а как можно это обойти?
     
  9. Овик

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

    С нами с:
    26 апр 2008
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Ерева
    я это все понимаю, можете сказать как это можно обойти? :(
     
  10. Овик

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

    С нами с:
    26 апр 2008
    Сообщения:
    8
    Симпатии:
    0
    Адрес:
    Ерева
    спасибо люди что помогли :(
     
  11. TheSingle

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

    С нами с:
    26 ноя 2007
    Сообщения:
    27
    Симпатии:
    0
    Адрес:
    Moscow
    Ни кто помочь не может, т.к. запрос у тебя правильный.
     
  12. BS

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

    С нами с:
    10 апр 2008
    Сообщения:
    149
    Симпатии:
    0
    да, развратил мускул народ, попробовали бы вы в оракле написать select * from a group by...
    тут же бы получили справку о своей неполноценности
     
  13. armadillo

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

    С нами с:
    6 апр 2007
    Сообщения:
    2.380
    Симпатии:
    0
    Адрес:
    Russia, Moscow
    да вобще непонятно зачем в других скулах group by нужен, жутко неполноценная штука. Одни вложенные запросы на запросе.