检查子查询中的所有条目

时间:2018-12-14 17:18:13

标签: sql postgresql

说我有三个表:

DealerSellsCar:{[DealerID,CarID]}

汽车:{[CarID,颜色]}

经销商:{[DealerID,Name]}

主键是CarID,DealerID,CarID和DealerID作为外键。

现在:说我有6个不同的carID(1 ... 6)和3个不同的DealerID(“ 1A”,“ 2B”,“ 3C”),其中只有DealerID“ 3C”出售所有汽车(那里有3C)是DealerSellsCar中的CarID(1 ... 6)条目)。

我将如何查询出售所有汽车(ID为1到6)的经销商?

我尝试过:

select dsc.DealerID
from DealersellsCar dsc
where dsc.CarID = all (select CarID from Car)

哪个没用。我得到没有条目的DealerID列(当应该有条目“ 3C”时)。我也手动检查了所有内容,但无济于事。

在此处进行谷歌搜索和搜索没有结果。很抱歉,如果这是重复的或者我不清楚自己的意思。

2 个答案:

答案 0 :(得分:0)

好吧,我认为最好在该查询中使用join来联接所有键:

select dsc.DealerID
from DealersellsCar dsc
inner join CarID c
on c.CarID = dsc.CarID
inner join Dealer d
on d.DealerID = dsc.DealerID

您可以执行此操作而不会出错,并输出具有重复的DealerID,如果您需要没有重复的DealerID,则需要使用“不重复”或“分组依据”:

select dsc.DealerID
from DealersellsCar dsc
inner join CarID c
on c.CarID = dsc.CarID
inner join Dealer d
on d.DealerID = dsc.DealerID
group by dsc.DealerID

或者:

select distinct dsc.DealerID
from DealersellsCar dsc
inner join CarID c
on c.CarID = dsc.CarID
inner join Dealer d
on d.DealerID = dsc.DealerID

你喜欢什么...

答案 1 :(得分:0)

尝试

select dsc.DealerID
from DealersellsCar dsc
group by dsc.DealerID 
having count(doc.DealerID) = (select count(c.id) from Car c);