2 つ以上のテーブルがあるとします。
表 A: aID、名前、誕生日
表 B: bID、petType、petName
表 C: cID、stackOverFlowUsername
ID、名前、誕生日、飼っている猫の数、スタック オーバーフローのユーザー名などを取得したい
私たちはできる
- 結合を使用して 3 つのテーブルすべてを結合する
select * from tableA... tableB... tableC...
- 複数の選択ステートメントを使用し、
select a.*, (select count(*) from tableB where petType = 'cat') as numberOfCats, (select...) as stackUsername from tableA a
- または私が知らなかった他の方法
私の質問は、選択、結合を使用する適切な状況はいつですか、それとももっと良い方法がありますか?
アップデート:
ここに別の質問があります。私が 3 つの stackoverflow アカウントを持っている場合、Tom は 1 つ、Peter は 2 つ、
A left join B left join C
合計6行を返します
select a.*, select count(*) from tableB where..., select top 1 stackOverFlowUsername from tableC
人が 3 人いるため、3 行を返します。
彼/彼女が持っているstackoverflowアカウントの数に関係なく、tableAの各人に1行のデータのみが必要な場合、結合を使用して同様のことを達成できますか?
ありがとう