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

ここで、intableがoftableと等しいテーブル内のdataレコードとレコードのすべての列を選択します。COUNT()connectordata_idsupplieriddata

結果は次のようになります。

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

mySQLの1つのクエリでこれを行うにはどうすればよいですか?

4

3 に答える 3

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
于 2013-02-19T15:46:41.587 に答える
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
于 2013-02-19T15:46:20.687 に答える
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)

于 2013-02-19T15:48:04.993 に答える