我有以下表格:
招标主任:
tenderid tendername
1 kjnj
2 hjbhb
3 abc投标大师:
bidid tenderid userid status
1 1 100 unsold
2 1 101 unsold
3 1 102 unsold
4 1 104 sold
5 2 100 unsold
6 2 101 sold
7 3 100 unsold
8 3 101 unsold
9 3 102 unsold现在我只想显示那些未售出的标书的名称。
我想要这样的产出:
tendername
abc这里只有第三份标书的名称,因为它不会卖给任何人。这里,招标1被出售给userid 104,所以它不会来,而招标2被卖给userid 101,所以它也不会来。
我写过这样的查询:
select t.tendername
from tender_master t,bid master b
where t.tenderid==b.tenderid
and b.status=='unsold'但它给了我所有的投标的名字。
有人能给我提供正确的查询吗?求你了。
发布于 2014-04-12 17:19:06
试试这个:
SELECT
tendername
FROM [Tender Master] TM
WHERE NOT EXISTS
(
SELECT 1 FROM [Bid Master] BM
WHERE TM.tenderid = BM.tenderid
AND BM.status = 'sold'
)发布于 2014-04-12 17:15:23
用单个=而不是==来尝试它。
发布于 2014-04-12 19:06:47
另一种方法是检查招标组中是否存在“出售”状态。
SELECT TenderName
FROM TenderMaster TM
INNER JOIN BidMaster BM ON TM.TenderID = BM.TenderID
GROUP BY TenderName
HAVING SUM(CASE Status WHEN 'sold' THEN 1 ELSE 0 END) = 0如果您正在使用Oracle,请将最后一行更改为
HAVING SUM(DECODE(Status, 'sold', 1, 0)) = 0https://stackoverflow.com/questions/23033492
复制相似问题