说我有三个表:
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”时)。我也手动检查了所有内容,但无济于事。
在此处进行谷歌搜索和搜索没有结果。很抱歉,如果这是重复的或者我不清楚自己的意思。
答案 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);