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