【发布时间】:2014-11-27 12:34:24
【问题描述】:
给定表格:
parts (part_id, part_desc, type_id, car_id)
types (type_id, type_name)
cars (car_id, car_model, car_make)
我想查找拥有属于“Honda”品牌和“Civic”型号的所有类型零件的汽车的 ID、型号和品牌。也就是说,如果 Honda Civic 有 A,B,C 类型,那么它将找到所有具有属于 A AND B 和 C 的零件的汽车。
我不确定如何执行此操作,但我设法为A OR B OR C 执行此操作
SELECT DISTINCT c.car_id, c.car_model, c.car_make
FROM cars c, parts p
WHERE c.car_id= p.car_id AND p.type_id IN (
SELECT p.type_id FROM cars c, parts p
WHERE a.car_id = p.car_id
AND a.car_model = 'Civic'
AND a.car_make = 'Honda'
)
innerquery 获取 Honda Civic 的所有类型的零件,但如果汽车只有 A,B,C 中的 1 个而不是全部,则 IN() 子句将匹配汽车。
我想避免使用ALL 和ANY 集合运算符。 A,B,C 也是一个例子,不要在答案中硬编码。子查询的结果将是未知的。
【问题讨论】: