我有很多表,并且所有表都执行了多个连接,没有不正确或重复的结果。我的一个表是多值,可以接受重复的相同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
答案 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。