很抱歉打扰你们,但我需要你们专业人士的一点帮助...
我有两张表:
Table1:
ID, date, menu1, menu2, menu3, menu4和
Table2:
ID, name, somethingElse, somethingElse2在Table1 (menu1,menu2,menu3,menu4)中是Table2的ID。我需要的是查询"date“值到数据库中,并从Table2 (取决于Table1的menuX值)中获取四行。有什么建议吗?
发布于 2014-10-11 00:32:47
阅读MySQL-docs并在JOINing上查找MySQL-Tutorial。在那里你会找到类似这样的东西:
用JOIN做一个简单的SELECT,告诉MySQL使用ID作为联结列:
SELECT Table1.`date` FROM Table1
JOIN Table2 ON Table1.ID = Table2.ID
WHERE Table1.menu1 = "someValue"
AND Table1.menu2 = "someOtherValue"如果运行速度有点慢,请尝试在其中一个表id- INDEX上添加一个INDEX:
ALTER TABLE Table1 ADD INDEX myIndex (ID)您可以通过以下语句检查所检查的行数
EXPLAIN SELECT Table1.`date` FROM Table1 ...发布于 2014-10-11 18:13:11
好了,现在我明白你的问题了。多亏了您提供的示例,下面的查询应该可以解决您的问题。这里的诀窍是使用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'你的菜单听起来很可口:-)
https://stackoverflow.com/questions/26303833
复制相似问题