我有三张桌子:
COLLECTION
PERSON
PERSON_COLLECTION
PERSON_COLLECTION
映射表在哪里id|person_id|collection_id
我现在想选择集合中的所有条目并按person.name
.
我是否必须先将单独的表与映射表连接起来,然后再对结果进行连接?
我有三张桌子:
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
您加入的顺序不会破坏它,但取决于您使用的 sql 产品可能会影响性能。您需要决定是要来自两个/任一表的所有记录还是只需要具有匹配映射条目的记录,这将更改您需要使用的连接类型。
不确定没有表架构,但我的看法是:
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