0

さて私は3つのテーブルを手に入れました:

tb1:

tb1_id PK
tb1_name

tb2:

tb2_id PK
tb1_id FK

tb3:

tb3_id PK
tb2_id FK

そして私はこのクエリを受け取りました:

select a.tb1_nome
      ,b.tb2_id
      ,count(c.tb2_id) as lins 
 from tb1 a 
      left join tb2 b on a.tb1_id=b.tb1_id 
      left join tb3 c on b.tb2_id=c.tb2_id 
 group by b.tb2_id order by a.tb1_id desc

ただし、tb1のすべての行を返すわけではありません。

4

2 に答える 2

1

3つのテーブルを取得しました。tb1と一致するtb2のすべての行を取得し、tb2と一致するtb3のすべての行の数を表示する必要があります。

INNER JOINの代わりに使うだけでいいと思いますLEFT JOININNER JOINテーブル上のレコードが結合されている行を選択します。これを試して、後でフィードバックしてください:)

SELECT  a.tb1_name,
        b.tb2_id,
        COUNT(c.tb2_id) TotalCount
FROM    tb1 a 
          INNER JOIN tb2 b
             on a.tb1_id = b.tb1_id
          INNER JOIN tb3 c
             on b.tb2_id = c.tb2_id
GROUP BY a.tb1_name, b.tb2_id
ORDER BY a.tb2_id DESC
于 2012-07-03T23:49:29.020 に答える
0

あなたがするとき

left join tb2 b on a.tb1_id=b.tb1_id

bにはtb2_idしかないので、タイプミスがあるかもしれません...tb1_idはありません

また、tb2で一致する結果がなくても、すべてのtb1行を取得する必要がある場合は、外部結合の使用を検討してください。

于 2012-07-03T22:56:19.663 に答える