[英]select records with one query
These are my tables structure : 这些是我的表结构:
data : 资料:
id | name
-----+-------
1 | d1
2 | d2
3 | d3
supplier : 供应商:
id | data_id | name
-----+-------------+----------
1 | 1 | Microsot
2 | 1 | Google
3 | 1 | Yahoo
4 | 2 | Apple
connector : 连接器:
id | supplier_id | name
-----+----------------+-----------
1 | 2 | Test 1
2 | 1 | Test 2
3 | 4 | Test 3
Now I want select all columns of data
records and COUNT()
of records which are in connector
table which the data_id
in supplier
table is equal with id
of data
table. 现在,我要选择
connector
表中的data
记录的所有列和记录的COUNT()
,其中supplier
表中的data_id
与data
表的id
相等。
the result should be like this: 结果应该是这样的:
id | name | COUNT()
------+-----------+---------
1 | d1 | 2
2 | d2 | 1
3 | d3 | 0
How can I do this with one query in mySQL ? 如何在MySQL中执行一个查询呢?
select data.id, data.name, count(*)
from data
join supplier on supplier.data_id = data.id
join connector on connector.supplier_id = supplier.id
group by data.id, data.name
SELECT
data.id,
data.name,
COUNT(DISTINCT connector.id)
FROM
data
LEFT JOIN supplier ON (data.id = supplier.data_id)
LEFT JOIN connector ON (supplier.id = connector.supplier_id)
GROUP BY
data.id, data.name
像这样吗
SELECT data.id, data.name, COUNT(data.id) FROM data LEFT OUTER JOIN supplier ON(data.id == supplier.data_id) LEFT OUTER JOIN JOIN connector ON (supplier.id == connector.supplier_id)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.