查询真的很烦我,我无法理解它

时间:2015-12-16 10:54:04

标签: sql select join erd

我是SQL新手,我有以下错误: ERD diagram for a haulage site

我想要执行的查询是: 可以使用多少车辆来装运x?|

任何想法? 我有:

select count(VehicleType) from Vehicle where in
 (select VEHICLETYPE, SHIPMENT_TYPE from can_carry
 where SHIPMENT_TYPE in
 (select SHIPMENT_TYPE from Shipment where ContractNo = x and ShipmentNo = x  );

但我觉得这是错的

1 个答案:

答案 0 :(得分:1)

你在第一个条件下没有VEHICLETYPE而且有一个缺失了。 所以这对你的有效SQL是有效的:

select count(VehicleType) from Vehicle where VEHICLETYPE in
(select VEHICLETYPE, SHIPMENT_TYPE from can_carry
 where SHIPMENT_TYPE in
 (select SHIPMENT_TYPE from Shipment where ContractNo = x and ShipmentNo = x))

但是这个SQL是PERFKILLER! :) 我的意思是你选择3组结果!所以这将有一个可怕的执行计划。 您可以使用JOIN编写更好的查询。有关执行计划的更多信息here