我正在尝试创建嵌套的连接语句并使用别名进行编程。让我给你一个我正在尝试加入的表和他们的外键列表。
TABLE1: id (Foreign key)
TABLE2: id (primary key), idx (foreign key)
TABLE3: id (primary key), idx (primary key)
TABLE4: id (primary key), idx (primary key)`
SELECT *
FROM (((TABLE1 JOIN
TABLE2
ON TABLE1.id = TABLE2.id
) AS NEW_TABLE JOIN
TABLE3
ON NEW_TABLE.id = TABLE3.id AND NEW_TABLE.idx = TABLE3.idx
) AS NEW_TABLE JOIN
TABLE4
ON NEW_TABLE.id = TABLE4.id AND
NEW_TABLE.idx = TABLE4.idx
);
如果这是一个有效的查询并以这种方式使用别名可以让我知道吗?
答案 0 :(得分:1)
我不这么认为。我会把它写成:
SELECT *
FROM TABLE1 JOIN
TABLE2
ON TABLE1.id = TABLE2.id JOIN
TABLE3
ON TABLE1.id = TABLE3.id AND TABLE2.idx = TABLE3.idx
TABLE4
ON TABLE1.id = TABLE4.id AND
TABLE2.idx = TABLE4.idx;
(嗯,实际上,我会使用表别名,但这是个主意。)
括号对你没有任何作用。我还认为重新使用NEW_TABLE
别名可能会产生错误。
答案 1 :(得分:0)
你可能需要嵌套完整的查询:
SELECT * FROM
(SELECT * FROM
(SELECT * FROM TABLE1 JOIN TABLE2 ON TABLE1.id = TABLE2.id ) A
JOIN TABLE3 ON A.id = TABLE3.id AND A.idx = TABLE3.idx) B
JOIN TABLE4 ON B.id = TABLE4.id AND B.idx = TABLE4.idx;
虽然在不知道表格内容的情况下很难说出您可能获得的结果类型或查询是否有效。
答案 2 :(得分:0)
格式如下..
SELECT * FROM
TABLE1
JOIN TABLE2 ON TABLE1.id = TABLE2.id
JOIN TABLE3 ON Table1.id = TABLE3.id
AND Table2.idx = TABLE3.idx
JOIN TABLE4 ON Table3.id = TABLE4.id
AND Table3.idx = TABLE4.idx