1

Oracle クエリに苦労しています。内部クエリに値を送信したいのですが、成功しません。私のクエリは次のようになります。

SELECT * FROM Pro u 
LEFT JOIN (SELECT * FROM PROLOG d
WHERE d.Id = (SELECT MAX(Id) FROM PROLOG t
          WHERE t.Project = **u.Id** 
          AND t.Prodstatus IN    (5,40)))z ON (u.ID = z.Project)
WHERE u.Id = 22;

を 22 に置き換えたいと思い u.Idます。値 22 は Pro u テーブルから取得されます。ヒントを教えてください。

4

2 に答える 2

1

結合をインラインビューに相関させることができるとは思いませんが、SQLステートメントを相関述語を使用した単純な外部結合に単純化することはできます。

SELECT * 
FROM pro u 
LEFT OUTER JOIN prolog d 
    ON d.project = u.id
    AND d.Id = (SELECT MAX(Id) 
                    FROM prolog t
                    WHERE t.project = u.id
                    AND t.prodstatus IN (5,40))
WHERE u.id = 22;
于 2013-01-31T22:26:48.470 に答える
0

その値をテーブルからサブクエリに渡す必要はありません.テーブル値Proを使用できます.prolog

SELECT * FROM Pro u 
LEFT JOIN (SELECT * FROM PROLOG d
WHERE d.Id = (SELECT MAX(Id) FROM PROLOG t
          WHERE t.Project = d.Project 
          AND t.Prodstatus IN    (5,40)))z ON (u.ID = z.Project)
WHERE u.Id = 22;
于 2013-01-31T22:00:27.543 に答える