0

我有三张桌子。表 1、表 2 和表 3。 在此处输入图像描述

因此,table1 中的属性objectR1R2对应于 table2 中的对象名称“yahoo”、“email”和“ping”。而R3对应于 table3 u-id 的名称“Jake”。

现在我需要将 table1 与 table2 连接 3 次并与 table3 连接一次以获得下表:

在此处输入图像描述

我听说我需要使用 LEFT JOIN 但无法获得所需的结果。任何帮助将不胜感激。
新表也应该通过只做一个(大)查询来创建。

谢谢

4

1 回答 1

1
SELECT  a.ID,
        e.name object,
        a.date,
        b.name R1,
        c.name R2,
        d.`u-name` R3
FROM    table1 a
        INNER JOIN table2 b
            ON a.r1 = b.object
        INNER JOIN table2 c
            ON a.r2 = c.object
        INNER JOIN table2 e
            ON a.object = e.object
        INNER JOIN table3 d
            ON a.r3 = d.`u-id`

要进一步了解有关联接的更多信息,请访问以下链接:

上面使用的查询INNER JOIN仅适用于table1所有字段不可为空的情况。当其中之一可以为并且您想要从 中返回所有列表时table1,请使用LEFT JOIN而不是INNER JOIN


“..另外,新表应该通过一个(大)查询来创建。”

CREATE TABLE tableNameHere(col1 INT,....) -- list of columns
AS
SELECT  a.ID,
        e.name object,
        a.date,
        b.name R1,
        c.name R2,
        d.`u-name` R3
FROM    table1 a
        INNER JOIN table2 b
            ON a.r1 = b.object
        INNER JOIN table2 c
            ON a.r2 = c.object
        INNER JOIN table2 e
            ON a.object = e.object
        INNER JOIN table3 d
            ON a.r3 = d.`u-id`
于 2013-05-12T01:55:25.357 回答