Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 具有多个值的多个左连接和where子句_Mysql_Join - Fatal编程技术网

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

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。当我左键联接所有表时,结果显示正确,但该特定列显示多值表中的一个值

目前我正在过滤多值表,但结果不可见,因为它只输出多值表中的一个值

菜单表

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有关。