Mysql 具有多个值的多个左连接和where子句
我有很多表,并且在没有错误或重复结果的情况下对所有表执行了多个连接。我的一个表是多值的,可以接受重复的相同ID。当我左键联接所有表时,结果显示正确,但该特定列显示多值表中的一个值 目前我正在过滤多值表,但结果不可见,因为它只输出多值表中的一个值 菜单表Mysql 具有多个值的多个左连接和where子句,mysql,join,Mysql,Join,我有很多表,并且在没有错误或重复结果的情况下对所有表执行了多个连接。我的一个表是多值的,可以接受重复的相同ID。当我左键联接所有表时,结果显示正确,但该特定列显示多值表中的一个值 目前我正在过滤多值表,但结果不可见,因为它只输出多值表中的一个值 菜单表 id cuisine_id 1 1 id cuisine_id 1 1 Empty id cuisine_id 1 3 菜谱表(多值/接受重复的菜单id) 查询 SELECT * FROM menu LEFT JOIN (
id cuisine_id
1 1
id cuisine_id
1 1
Empty
id cuisine_id
1 3
菜谱表(多值/接受重复的菜单id)
查询
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
id cuisine_id
1 1
Empty
id cuisine_id
1 3
带有Where子句
id cuisine_id
1 1
id cuisine_id
1 1
Empty
id cuisine_id
1 3
预期结果(带Where子句)
您可以使用简单的左连接,请尝试以下操作:
SELECT m.*
FROM Menu m LEFT JOIN CuisineMenu cm ON m.id = cm.menu.id
WHERE cm.cuisine_id = 3;
这将导致1行。从以下内容更改sql代码:
SELECT *
FROM cuisinemenu
GROUP BY menu_id
为此:
SELECT *
FROM cuisinemenu
GROUP BY cuisine_id
第一个问题只显示菜单id,不显示烹饪id。这个问题与mysql或Sql Server有关吗?如果是Sql Server,则它必须位于何处(cuisinemenu.courity_id='3')。空结果集实际上是正确的。连接条件
menu.id=courine\u menu.courine\u id
和where子句where courine\u menu.id=3
不能共存。请细化您的要求。@YusufHassan我希望这是cuisinemenu.menu\u id=menu.id。不确定此问题是否与SQL Server有关。