Oracleデータベースに対してクエリを実行しようとしています。複数の結合を持つOracle ROWNUM
マイテーブル構造である:
- D - 一対一
- O、O - R一対多
- O - 多対多M(VIA MTM)
私は次のクエリを使用しています:
SELECT o.id ID, ROWNUM rn /*row 1*/
FROM TABLE_D d
LEFT JOIN TABLE_O o ON d.O_ID=o.ID
RIGHT JOIN TABLE_R r ON r.O_ID = o.ID AND r.TYPE = 'SOME_TYPE' /*row 4*/
RIGHT JOIN TABLE_MTM mtm ON o.ID = mtm.ORD_ID /*row 5-6*/
RIGHT JOIN TABLE_M m ON mtm.M_ID = m.ID AND m.TYPE = 'SOMETHING_ELSE' /*row 5-6*/
WHERE o.ACTIVE=0
ORDER BY o.SOME_COL ASC;
(これはほんの少しのpです私の完全な質問の芸術;はい、私はROWNUM、 'd'テーブル、そしてすべてが必要です)
- このクエリを実行すると結果は返されません。私は4行目を削除した場合、私はSELECTからROWNUMを削除した場合
- 、それは
- 結果を返し、それは私が5行目を削除し、6行場合、それは結果を返し
- 結果返します。
私は何が欠けているのか教えていただけますか?
更新: すべてがOracle 12c上でうまく動作します。 10gでは正しく動作しません。あなたは多くのものが欠けている
行1のROWNUMにテーブルの別名 "d"を接頭してみましたか? –
ROWNUMはテーブルの列ではありません。 –