我需要通过连接两个表来查询数据库。这是我所拥有的:
table 上小镇:
- 编号
- 姓名
- 地区
表格供应商:
- 编号
- 姓名
- town_id
我目前有以下查询,它输出属于给定区域的所有城镇:
SELECT id, name FROM Town WHERE region = 'North West';
现在我需要扩展这个查询并创建两个进一步的查询,如下所示:
输出每个城镇的供应商数量
仅输出有 1 个或多个供应商的城镇
如果有帮助,我正在为我的脚本使用 PHP。我知道我可以使用 PHP 获取这些数据,但就性能而言,如果在 MySQL 中完成可能会更好。
编辑(2010 年 7 月 27 日):
我现在需要最后一次扩展这个 - 还有另一个名为 Supplier_vehicles 的表:
- 编号
- 供应商编号
- 车辆编号
一个 Supplier 可以有很多 Supplier_vehicles。计数(在本例中为 NumSupplier)现在需要包含给定城镇中具有任何给定 vehicle_id(IN 条件)的供应商总数:
SELECT * FROM Supplier s, Supplier_vehicles v WHERE s.id = v.supplier_id AND v.vehicle_id IN (1, 4, 6)
需要将上述查询整合到已有的JOIN查询中。
最佳答案
计算供应商的数量。
SELECT t.id, t.name, count(s.id) as NumSupplier
FROM Town t
LEFT OUTER JOIN Suppliers s ON s.town_id = t.id
GROUP BY t.id, t.name
只有至少有一个供应商的城镇
SELECT DISTINCT t.id, t.name
FROM Town t
INNER JOIN Suppliers s ON s.town_id = t.id
你是 100% 正确的,最好的地方是 SQL 查询。
关于MySQL 连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3319966/