web-dev-qa-db-ja.com

1対多の関係で2つのテーブルを結合する効率的な方法

これは面接で私に聞かれた面接の質問で、答えられませんでした。助けてください..

2つのテーブルを1対多の関係で結合する最も効率的な方法は何ですか

6
user3678399

最も効果的な方法は、次のようにINNER JOINを使用することです。

SELECT   *
FROM        Parent P
INNER JOIN  Child  C
    ON      C.ParentId = P.ParentId

また、子レベルで集計が必要な場合は、GROUP BYとSUM、およびAVGまたはその他の集計関数を追加できます。

SELECT      P.Name
            , P.Address
            , SUM(C.Amount)
FROM        Parent P
INNER JOIN  Child  C
    ON      C.ParentId = P.ParentId
GROUP BY    P.Name
            , P.Address
6
Peter Elzinga

質問には「1対多の関係」と明記されているため、主キーと外部キーの関係について説明するよう求められている可能性があります。

この場合、次のように言うことができます。

「1対多」関係の「1」側のテーブルには、主キー列が必要です。他のテーブルには、最初のテーブルの主キーを指すように定義された外部キーが必要です。両方のテーブルから結果を返すには、INNER JOIN句を追加して両方のテーブルを結合します。

1
Max Vernon