选择,其中id =来自其他选择的倍数

时间:2010-01-29 16:56:01

标签: mysql select multiple-tables

我累了,我无法绕过这个。我有两张桌子:

table menu
@id = id, @nr = id of parent
|======|======|  
|  id  |  nr  |
|======|======|
|  10  |   9  |
|  11  |  10  |
|  12  |  10  |
|  13  |  10  |
|======|======|

table content
@id = id, @mf = menu - first in tree, @mi = menu item linked to content
|======|======|======|
|  id  |  mf  |  mi  |
|======|======|======|
|  85  |   9  |  11  |
|  89  |   9  |  12  |
|  95  |   9  |  13  |
|======|======|======|

现在,我需要从content中选择所有行,其中(mi = menuid),但我需要选择menu。来自id的{​​{1}}首先从menu选择* menu nr = 10(或任何数字,我用PHP放入我的sql)

我真的无法绕过所有那些UNIONS,LEFT JOINS,HAVING和东西......

谢谢

编辑: 谢谢大家,惭愧我只能选择一件好事:)

4 个答案:

答案 0 :(得分:7)

SELECT C.* FROM content C
INNER JOIN menu ON C.mi = menu.id AND menu.nr = 10;

<强>更新

在回复您的评论时,您可能会发现W3 Schools section on SQL JOINS是一个有用的资源,可以开始使用。

答案 1 :(得分:2)

这是你要求的吗?以下内容将返回mi在menu.id和nr = 10中的内容中的所有行。

select *
from content
where mi in (select id from menu where nr=10)

答案 2 :(得分:0)

SELECT * FROM content WHERE mi IN(SELECT id FROM menu WHERE nr = 10)

答案 3 :(得分:0)

未测试

选择内容。* FROM内容,菜单WHERE menu.nr = 10 AND content.mi = menu.id

SELECT c。*,menu.nr FROM menu LEFT JOIN content AS c ON menu.id = c.mi WHERE menu.nr = 10