好的,我已经搜索了两天但没找到任何东西。我认为这是一个简单的问题,我出于某种原因无法绕过它。
假设您有两张桌子。
汽车
CarID
CarModel
CarTypes
CarTypeID
CarID
TypeOfCar
Cars
的示例数据:
CarID CarModel
A Pinto
B Corvette
C Ferrari
CarTypes
的示例数据:
CarTypeID CarID TypeOfCar
1 A ChickMagnet
2 A FourDoor
3 A GasGuzzler
4 B SportsCar
5 B TwoDoor
6 B GasGuzzler
7 C GasGuzzler
8 C TwoDoor
9 C ChickMagnet
Car和CarType有1对多的关系(汽车可以有很多不同的类型)。我无法绕过那些需要显示所有“ChickMagnet”和“GAS Guzzler”汽车的sql。
结果集所需:
CarID CarModel
A Pinto
C Ferrari
非常感谢任何帮助。我正在使用SQL Server。我可以使用Like和Text搜索来完成它,但我想避免这种情况。
答案 0 :(得分:3)
SELECT c.CarID, c.CarModel
FROM Cars c
INNER JOIN CarTypes ct
ON c.CarID = ct.CarID
WHERE ct.TypeOfCar IN ('ChickMagnet', 'GasGuzzler')
GROUP BY c.CarID, c.CarModel
HAVING COUNT(DISTINCT ct.TypeOfCar) = 2
答案 1 :(得分:2)
这是一种方式:
SELECT c.CarId, c.CarModel
FROM Cars c
INNER JOIN CarTypes ct1
ON c.CarID = ct1.CarID
INNER JOIN CarTypes ct2
ON c.CarID = ct2.CarID
WHERE ct1.TypeOfCar = 'ChickMagnet'
AND ct2.TypeOfCar = 'GasGuzzler'
答案 2 :(得分:0)
就在我的头顶,你不能使用CarID in()和CarID in()