我正在尝试获取提供给尚未在其项目中排队的用户的所有优惠。所以,我根据用户的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个优惠。用户1将三个排队。我不应该看到提议1,4或5。
感谢您的任何指示和帮助。
答案 0 :(得分:0)
根据我的评论解释,为什么不尝试这个?当您在主查询中已经有PROJECT表JOINED时,我不确定为什么需要子查询。
WHERE p.uid = '1'
AND ofh.OfferID NOT IN (1, 4, 5);