0

プロジェクトでまだキューに入れられていない、ユーザーに提供されたすべてのオファーを取得しようとしています。そのため、ユーザーの ID に基づいてテーブルからオファーを取得していますが、ユーザーがプロジェクトに既に追加したもの (テーブルOfferSuggestionHeaderに保存されているもの) を取得しないようにしています。Projects

次のクエリがあります。

SELECT DISTINCT ofh.OfferID, ofh.OfferTitle, ofh.OfferVendor, ofh.Savings,ofh.SavingsPercent
    FROM OfferSuggestionHeader ofh
LEFT JOIN OfferSuggestionDetail osd
    ON ofh.OfferID = osd.OfferID
LEFT JOIN Facilities f
    ON osd.FacilityID = f.id
LEFT JOIN UserFacility uf
    ON f.id = uf.fid
LEFT JOIN Users u
    ON uf.uid = u.uid
LEFT JOIN Projects p
    ON p.uid = u.uid
WHERE p.uid = '1' 
    AND ofh.OfferID <> ANY (SELECT offer_id FROM Projects WHERE uid = '1')

すべてのオファーが表示されます。削除するANYと、サブクエリが返す結果が多すぎるというエラーが表示されます。

6つのオファーがあります。3 つはユーザー 1 によってキューに入れられています。オファー 1、4、または 5 は表示されません。

ポインタとヘルプをありがとう。

4

1 に答える 1

0

私のコメントの説明によると、これを試してみませんか?メインクエリにすでに PROJECT テーブル JOINED があるのに、サブクエリが必要な理由がわかりません..

WHERE p.uid = '1' 
    AND ofh.OfferID NOT IN (1, 4, 5);
于 2013-02-25T16:24:36.053 に答える