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.
感谢您的任何指针和帮助。
你可以尝试<<和ofh.OfferID NOT IN(SELECT offer_id FROM项目其中uid =“1” )>> – 2013-02-25 16:07:05
@John,这个'SELECT offer_id FROM WHERE uid ='1''返回uid = 1下的6个offer。是否表示来自'1,2,3,4,5,6'的offer ID?而且你还指定你不想要'1,4,5'吗?因此,如果在主查询中已经有JOIN Projects表并且包含WHERE P.uid = 1,那么只需简单地执行'AND ofh.OfferID Not in(1,4,5)'就可以了。 – bonCodigo 2013-02-25 16:23:07
谢谢,伙计们。你是对的。我显然有一阵白痴。我尝试了'IN'来代替'ANY'操作,但是并没有想到添加现在非常明显的'NOT'! @bonCodigo,我需要使用'SELECT',因为我不想要1,4和5(在1-6中)只知道,因为我正在开发它,所以'SELECT'语句将就位我的'全知':)再次感谢! – 2013-02-25 16:56:50