我有三张桌子:
COLLECTION
PERSON
PERSON_COLLECTION
其中PERSON_COLLECTION
是映射表id|person_id|collection_id
我现在想要选择集合中的所有条目,并按person.name
对它们进行排序。
我是否必须首先使用映射表连接单独的表,然后再对结果进行连接?
答案 0 :(得分:5)
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
答案 1 :(得分:0)
您加入的订单不会破坏它,但取决于您使用的sql产品可能会影响性能。 您需要确定是否需要来自两个/任何一个表的所有记录或仅需要具有匹配映射条目的记录,这将更改您需要使用的连接类型。
答案 2 :(得分: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