SQL JOIN使用映射表

时间:2012-11-20 17:28:30

标签: sql inner-join

我有三张桌子:

COLLECTION 
PERSON 
PERSON_COLLECTION

其中PERSON_COLLECTION是映射表id|person_id|collection_id

我现在想要选择集合中的所有条目,并按person.name对它们进行排序。

我是否必须首先使用映射表连接单独的表,然后再对结果进行连接?

3 个答案:

答案 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