我很抱歉打扰,但我需要你的专业人士的帮助......
我有两张桌子:
Table1:
ID, date, menu1, menu2, menu3, menu4
和
Table2:
ID, name, somethingElse, somethingElse2
在表1中(menu1,menu2,menu3,menu4)是Table2的ID。我需要的是向数据库查询“date”值并从Table2获取四行(取决于Table1的menuX值)有什么建议吗?
答案 0 :(得分:1)
阅读MySQL-docs并查看关于JOINing的MySQL教程。你会发现这样的事情:
使用SELECT
做一个简单的JOIN
并告诉MySQL使用ID
作为join-colum:
SELECT Table1.`date` FROM Table1
JOIN Table2 ON Table1.ID = Table2.ID
WHERE Table1.menu1 = "someValue"
AND Table1.menu2 = "someOtherValue"
如果运行速度有点慢,请尝试在其中一个表上添加INDEX
id-col:
ALTER TABLE Table1 ADD INDEX myIndex (ID)
您可以通过声明
来检查检查的行数EXPLAIN SELECT Table1.`date` FROM Table1 ...
答案 1 :(得分:0)
好的,现在我理解你的问题。感谢您提供的示例,这是一个可以解决您的问题的查询。这里的诀窍是使用UNION
将一个查询结果附加到另一个查询结果下。这样做四次就可以了:
SELECT b.* FROM dailymenu as a JOIN menu as b ON a.menu1 = b.ID WHERE a.`date` = '2014-10-08'
UNION
SELECT b.* FROM dailymenu as a JOIN menu as b ON a.menu2 = b.ID WHERE a.`date` = '2014-10-08'
UNION
SELECT b.* FROM dailymenu as a JOIN menu as b ON a.menu3 = b.ID WHERE a.`date` = '2014-10-08'
UNION
SELECT b.* FROM dailymenu as a JOIN menu as b ON a.menu4 = b.ID WHERE a.`date` = '2014-10-08'
你的菜单听起来很美味: - )