根据另一个表中的内容仅选择一些条目

时间:2013-02-25 15:53:07

标签: mysql

我正在尝试获取提供给尚未在其项目中排队的用户的所有优惠。所以,我根据用户的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。

感谢您的任何指示和帮助。

1 个答案:

答案 0 :(得分:0)

根据我的评论解释,为什么不尝试这个?当您在主查询中已经有PROJECT表JOINED时,我不确定为什么需要子查询。

WHERE p.uid = '1' 
    AND ofh.OfferID NOT IN (1, 4, 5);