多个左连接和where子句具有多个值

时间:2017-05-14 09:50:38

标签: mysql join

我有很多表,并且所有表都执行了多个连接,没有不正确或重复的结果。我的一个表是多值,可以接受重复的相同ID。当我离开连接所有表时,结果显示正确,但该特定列显示多值表中的一个值。

目前我正在对多值表进行过滤,但结果是不可取的,因为它只输出多值表中的单个值。

菜单表

id cuisine_id 
1  1

CuisineMenu表(多值/接受重复菜单的ID)

cuisine_id menu_id
1          1   
2          2 (Ignore)
3          1

查询

SELECT * FROM menu 
LEFT JOIN (
       SELECT *      
       FROM cuisinemenu     
       GROUP BY menu_id 
) cuisinemenu ON cuisinemenu.menu_id = menu.id
WHERE ( cuisine_id = '3')

输出

没有Where子句

id cuisine_id
1  1

使用Where子句

Empty

预期结果(使用Where子句)

id cuisine_id
1  3

2 个答案:

答案 0 :(得分:0)

您可以使用简单LEFT JOIN,请尝试以下操作:

SELECT m.*
FROM Menu m LEFT JOIN CuisineMenu cm ON m.id = cm.menu.id
WHERE cm.cuisine_id = 3;

这应该会产生1行。

答案 1 :(得分:0)

从以下内容更改您的sql代码:

   SELECT *      
   FROM cuisinemenu     
   GROUP BY menu_id

到此:

   SELECT *      
   FROM cuisinemenu     
   GROUP BY cuisine_id

第一个只显示menu_id而不显示cuisine_id。