Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.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内部连接作为多行结果_Mysql - Fatal编程技术网

MYSQL内部连接作为多行结果

MYSQL内部连接作为多行结果,mysql,Mysql,我的数据库里有两张桌子:菜单和菜肴。(我已经翻译了列和数据库名称,如果没有意义就不用麻烦了) 菜单表 id date_begins date_ends id_dishes_monday id_dishes_tuesday id_wednesday 1 xxxxx xxxxx 1 2 3 餐具台 id

我的数据库里有两张桌子:菜单和菜肴。(我已经翻译了列和数据库名称,如果没有意义就不用麻烦了)

菜单表

id     date_begins       date_ends      id_dishes_monday  id_dishes_tuesday  id_wednesday              
 1        xxxxx             xxxxx              1                   2                3
餐具台

id      date               dynamic_dishes
 1      2016/03/02              BLOB
 2      2016/03/03              BLOB
 3      2016/03/04              BLOB

我想从菜单表中选择星期一、星期二、星期三,并从菜谱表中检索多行。

我尝试使用这个查询,但它只返回一行,我不知道为什么

SELECT D.* FROM Menu M INNER JOIN Dishes D WHERE D.id IN (M.id_dishes_monday,M.id_dishes_tuesday,id_dishes_wednesday) ORDER BY M.id DESC LIMIT 1

此查询在此示例中生成的内容:


我想要什么:




请注意,表格数据只是为了举例说明,我想知道为什么这个查询没有很好地工作,因为它是正确的查询。

因为您限制了输出

SELECT D.* 
FROM Menu M
INNER JOIN Dishes D
WHERE D.id IN (M.id_dishes_monday,M.id_dishes_tuesday,id_dishes_wednesday)
ORDER BY M.id DESC

我已经删除了查询末尾的LIMIT 1,它将结果限制在第一行

“如果没有意义,请不要麻烦”-好的,我的意思是不关注数据库或列名,只关注逻辑,即使它们对您没有意义。就是这样。我认为限制器是用于菜单表的,但没有注意到这一点。感谢这真的是一个交叉连接——但MySQL并不关心这些微妙之处。
     id      date               dynamic_dishes
     1      2016/03/02              BLOB
     2      2016/03/03              BLOB
     3      2016/03/04              BLOB
SELECT D.* 
FROM Menu M
INNER JOIN Dishes D
WHERE D.id IN (M.id_dishes_monday,M.id_dishes_tuesday,id_dishes_wednesday)
ORDER BY M.id DESC