9

我有三张桌子:

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

您加入的顺序不会破坏它,但取决于您使用的 sql 产品可能会影响性能。您需要决定是要来自两个/任一表的所有记录还是只需要具有匹配映射条目的记录,这将更改您需要使用的连接类型。

于 2012-11-20T17:34:26.657 回答
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 回答