0

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行のデータのみが必要な場合、結合を使用して同様のことを達成できますか?

ありがとう

4

1 に答える 1