私は3つのテーブルを持っています:
COLLECTION
PERSON
PERSON_COLLECTION
PERSON_COLLECTION
マッピングテーブルはどこですかid|person_id|collection_id
コレクション内のすべてのエントリを選択して、で並べ替えますperson.name
。
最初に個別のテーブルをマッピングテーブルと結合してから、結果に対して再度結合する必要がありますか?
私は3つのテーブルを持っています:
COLLECTION
PERSON
PERSON_COLLECTION
PERSON_COLLECTION
マッピングテーブルはどこですかid|person_id|collection_id
コレクション内のすべてのエントリを選択して、で並べ替えますperson.name
。
最初に個別のテーブルをマッピングテーブルと結合してから、結果に対して再度結合する必要がありますか?
SELECT
c.*,
p.Name
FROM
Collection c
JOIN Person_Collection pc ON pc.collection_id = c.id
JOIN Person p ON p.id = pc.person_id
ORDER BY p.Name
テーブルスキーマがないとわかりませんが、私の見解は次のとおりです。
SELECT
c.*,
p.*
FROM
Person_Collection pc
LEFT JOIN Collection c
ON pc.collection_id = c.id
LEFT JOIN Person p
ON pc.person_id = p.id
ORDER BY p.name
参加する順序はそれを壊しませんが、使用しているSQL製品によってはパフォーマンスに影響を与える可能性があります. 両方/どちらかのテーブルからすべてのレコードを取得するか、一致するマッピング エントリを持つレコードのみを取得するかを決定する必要があります。これにより、使用する必要がある結合の種類が変わります。