0

我正在尝试获取提供给尚未在其项目中排队的用户的所有优惠。因此,我OfferSuggestionHeader根据我的用户 ID 从表中获取报价,但也尝试确保它不会获取用户已经添加到他们的项目中的任何内容(存储在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个优惠。三个由用户 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 回答