内部联接返回单行而不是多个

时间:2017-08-09 03:51:59

标签: javascript mysql join

我的内部联接仅返回第一行,但在我的表中有多行。我有3张桌子。我正在进行从主要到次要到第三个的连接。

  

Main(左连接) - >二级(内部联接) - >第三(返回一行而不是多行)

第一张表

id name
1  john
2  abel
3  julia

第二张表

id first_table(FK)
1  1
2  2

第三表

id second_table(FK) name
1  1                hello 
2  1                haha 
3  2                thanks

查询

SELECT * FROM first_table 
LEFT JOIN second_table ON first_table.id = second_table.first_table
INNER JOIN third_table ON third_table.second_table = second_table.id

它返回第一个表和第二个表,其中包含来自第三个表的单行

我想要的是什么:

返回第一个表和第二个表,其中包含来自第三个表的多行

2 个答案:

答案 0 :(得分:0)

你可以做到

SELECT * FROM first_table 
LEFT JOIN 
(second_table 
INNER JOIN third_table ON third_table.second_table = second_table.id) 
ON first_table.id = second_table.first_table;

或与原始查询类似的结果。

SELECT * FROM first_table 
INNER JOIN 
(second_table 
INNER JOIN third_table ON third_table.second_table = second_table.id) 
ON first_table.id = second_table.first_table;

答案 1 :(得分:0)

您的查询可能有误。您正在从first_table获取并在first_table上应用LEFT连接,而JOIN条件使用second_table.first_table列。这将在执行时抛出异常。它应该是这样的,并将为您提供您想要的多个记录。我已经测试了这个。

SELECT * FROM first_table 
LEFT JOIN second_table ON first_table.id = second_table.first_table
INNER JOIN third_table ON third_table.second_table = second_table.id
相关问题