我应该如何进行以下连接以获得所需的结果?

时间:2013-05-12 01:52:05

标签: mysql left-join inner-join

我有三张桌子。 table1,table2和table3。 enter image description here

因此,table1中的属性对象 R1 R2 对应于table2中的对象名称 “雅虎”,“电子邮件”和“ping”。而 R3 对应于table3 u-id的名称“Jake”。

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

enter image description here

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

谢谢

1 个答案:

答案 0 :(得分: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`