2013-02-19 2 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 записей и COUNT() записей, которые находятся в connector стол, который data_id в supplier стол равен id из data стол.

результат должен быть таким:

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

Как я могу сделать это с помощью одного запроса в MYSQL?

+1

РТЛМ: http://en.wikipedia.org/wiki/Join_%28SQL%29 –

+0

@GordonLinoff Я пытаюсь с буксирными запросов, я хочу знать, есть ли способ, чтобы писали только в одном запросе ?! – MajAfy

ответ

1
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 
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)