これは奇数のビットです。私は3つのテーブルを結合する次のクエリを実行しようとしています。'Order By'句の列を要求するクエリは、 'Group 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 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がgroup by
ステートメントの一部ではないため、この問題が考えられます。これが原因なら、それはなぜ重要なのでしょうか?私は以前これを経験しておらず、グループと注文書との間に関係がないとは思わなかった。
私は上記のOracle 10GとMySQLをテストしました。事前に
おかげでORDER BY句は、SELECT文の中で他のすべての後に実行さ
最初のSQL文に入力ミスがあります。下の私の答えを見てください。 –
本当に暗黙の構文を使用しないでください。これはSQLの反パターンです。後で左の結合に変更したい場合は、誤ったクロス結合の影響を受けやすく、維持しにくいです。これは、わずか20年前の貧弱な構文です。 – HLGEM