2017-03-13 20 views
0

テーブルBの合計結果がテーブルCからcount(*)で得られるため、3つのテーブルがあり、テーブルBの合計結果を合計します。私はすでに2つのテーブルで合計count(*)を得る方法を知っていますが、私はどのように3つのテーブルを組み合わせるか考えていませんでした。ここに例と結果があります。MySQLテーブル3とテーブル3をテーブル1とテーブル2のIDで結合する

表A、表Bに子供を持っていると表Bのいくつかは表Cに子供を持っているので、私はどれだけ多くの表の全体孫

enter image description here

enter image description here知りたいみたいです

enter image description here

enter image description here

そして、ここで私はすでにちょうど2つのテーブルと結合使ってみましたコードは次のとおりです。

SELECT 
    table_a.*, 
    (
     SELECT 
      count(*) 
     FROM 
      table_b 
     WHERE 
      table_b.id_b = table_a.id_A 
    ) AS totala 
FROM 
    table_a 
+1

あなたは結果を説明していただけますか? – Mureinik

+0

@Mureinikあなたの応答のおかげで、私はすでに結果の例が含まれています。上記の例のように、音楽は表C-id_Bのデータが表B_id_Bと同じであり、表B_id_Aが表A_id_A –

+0

@ JhonnyJrと等しいため、合計4つのデータを有する。その論理によって、「映画」の数は5ではないはずですか? –

答えて

1

ため番目の数を必要とすることでしたあなたは次のことを試すことができます:

SELECT a.id_A, a.Name, COUNT(c.id_c) AS total 
FROM table_a a 
LEFT JOIN table_B b ON a.id_A = b.id_A 
LEFT JOIN table_C c ON b.id_B = c.id_B 
GROUP BY a.id_a; 

ここにはSQL Fiddleです。

+0

"シンタックスエラー*の近くに結果が出ます"):(ただし、 "c" ()は空の結果で表示されます –

+0

@JhonnyJr。質問を修正してSQLフィドルを追加しました。それは今のところうまくいけば教えてください。 –

+0

ああ、それは仕事です:あなたはとても素晴らしいです、ありがとう –

0

あなたが結合されたテーブル

select a.id_A, a.name, count(*) 
from tableA a 
left join tableB b on a.id_A = b.id_A 
left join tableC c on c.id_b = b.id_b 
group by a.id_A, a.name 
+0

ちょうど私はテーブルcからのテーブルaとの関係を持っているテーブルbからの合計の結果を返します。( –

0

私はあなたのアールは、この探し思う:

SELECT A.*, COUNT(*) as Total 
FROM table A 
INNER JOIN table B using(id_A) 
INNER JOIN table C using(id_B) 
GROUP BY A.id_A ; 
+0

それは私に結果を与えます。 –

+0

欄の「ID_A」列が不明です。答えにcolumn_nameに大文字がありますが、それは問題ではありません。 – iLikeMySql

関連する問題