我有三张桌子。表 1、表 2 和表 3。
因此,table1 中的属性object、R1和R2对应于 table2 中的对象名称“yahoo”、“email”和“ping”。而R3对应于 table3 u-id 的名称“Jake”。
现在我需要将 table1 与 table2 连接 3 次并与 table3 连接一次以获得下表:
我听说我需要使用 LEFT JOIN 但无法获得所需的结果。任何帮助将不胜感激。
新表也应该通过只做一个(大)查询来创建。
谢谢
我有三张桌子。表 1、表 2 和表 3。
因此,table1 中的属性object、R1和R2对应于 table2 中的对象名称“yahoo”、“email”和“ping”。而R3对应于 table3 u-id 的名称“Jake”。
现在我需要将 table1 与 table2 连接 3 次并与 table3 连接一次以获得下表:
我听说我需要使用 LEFT JOIN 但无法获得所需的结果。任何帮助将不胜感激。
新表也应该通过只做一个(大)查询来创建。
谢谢
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`