我目前有以下内容:
表镇:
桌子供应商:
以下查询返回每个城镇的供应商数量:
SELECT t.id, t.name, count(s.id) as NumSupplier
FROM Town t
INNER JOIN Suppliers s ON s.town_id = t.id
GROUP BY t.id, t.name
我现在希望在查询中引入另一个表,Supplier_vehicles。供应商可以拥有许多车辆:
表供应商_车辆:
现在,NumSupplier 字段需要返回具有任何给定vehicle_id(IN 条件)的每个城镇的供应商数量:
以下查询将简单地返回具有任何给定vehicle_id的供应商:
SELECT * FROM Supplier s, Supplier_vehicles v WHERE s.id = v.supplier_id AND v.vehicle_id IN (1, 4, 6)
我需要将其集成到第一个查询中,以便它返回具有任何给定vehicle_id 的供应商数量。
SELECT t.id, t.name, count(s.id) as NumSupplier
FROM Town t
INNER JOIN Suppliers s ON s.town_id = t.id
WHERE s.id IN (SELECT sv.supplier_id
FROM supplier_vehicles sv
WHERE sv.vehicle_id IN (1,4,6))
GROUP BY t.id, t.name
或者你可以做一个INNER JOIN
(因为您的供应商加入是内部的,但这将删除没有供应商拥有这些车辆的城镇)并更改COUNT(s.id)
TO COUNT(DISTINCT s.id)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)