2013-02-19 78 views
0

这是我的表结构记录:选择一个查询

数据:

id | name 
-----+------- 
1 | d1 
2 | d2 
3 | d3 

供应商:

id | data_id | name 
-----+-------------+---------- 
1 | 1   | Microsot 
2 | 1   | Google 
3 | 1   | Yahoo 
4 | 2   | Apple 

连接器:

id | supplier_id | name 
-----+----------------+----------- 
1 | 2    | Test 1 
2 | 1    | Test 2 
3 | 4    | Test 3 

现在我想选择所有专栏data个记录和其在connector表,该表中supplierdata_iddata表的id相等的记录COUNT()

的结果应该是这样的:

id | name | COUNT() 
------+-----------+--------- 
1  | d1  | 2 
2  | d2  | 1 
3  | d3  | 0 

我怎么能做到这一点,在MySQL的一个查询?

+1

RTLM:http://en.wikipedia.org/wiki/Join_%28SQL%29 – 2013-02-19 15:44:22

+0

@GordonLinoff我拖查询尝试,我想知道有没有办法在短短一个查询写道: ?! – MajAfy 2013-02-19 15:47:04

回答

1
​​
2
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 
0

像这样的事情?

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)