9

私は3つのテーブルを持っています:

COLLECTION 
PERSON 
PERSON_COLLECTION

PERSON_COLLECTIONマッピングテーブルはどこですかid|person_id|collection_id

コレクション内のすべてのエントリを選択して、で並べ替えますperson.name

最初に個別のテーブルをマッピングテーブルと結合してから、結果に対して再度結合する必要がありますか?

4

3 に答える 3

10
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
于 2012-11-20T17:30:16.670 に答える
0

テーブルスキーマがないとわかりませんが、私の見解は次のとおりです。

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
于 2012-11-20T17:35:55.687 に答える
0

参加する順序はそれを壊しませんが、使用しているSQL製品によってはパフォーマンスに影響を与える可能性があります. 両方/どちらかのテーブルからすべてのレコードを取得するか、一致するマッピング エントリを持つレコードのみを取得するかを決定する必要があります。これにより、使用する必要がある結合の種類が変わります。

于 2012-11-20T17:34:26.657 に答える