Немного странный этот. Я пытаюсь выполнить следующий запрос, объединяющий 3 таблицы.
Select t3.id, t3.name, t3.phone_no, t1.reg_dtm, count(t1.reg_dtm)
from tableA t1, tableB t2, tableC t3
Where t1.id = t2.id
And t2.id = t3.id
Group by t3.id, t3.name, t3.phone_no, t1.reg_dtm
Order by t2.id, t1.reg_dtm
Приведенный выше запрос возвращает следующую ошибку
ORA-00979: not a GROUP BY expression
Но если я изменю его так, чтобы все в предложении group by находилось в порядке order by, то оно работает.
Select t3.id, t3.name, t3.phone_no, t1.reg_dtm, count(t1.reg_dtm)
from tableA t1, tableB t2, tableC t3
Where t1.id = t2.id
And t2.id = t3.id
Group by t3.id, t3.name, t3.phone_no, t1.reg_dtm
Order by t3.id, t3.name, t3.phone_no, t1.reg_dtm
Что именно является причиной этого?
Я думаю, что проблема, возможно, в том, что t2.id, показанный в операторе order by
в первом запросе, не является частью оператора group by
. Если это причина, то почему это важно? Я никогда не сталкивался с этим раньше и не думал, что существует какая-либо связь между группой и порядком по заявлениям.
Я проверял вышеизложенное как на Oracle 10G, так и на MySQL.
Заранее спасибо