2010-01-29 222 views
0

我很累,我无法将头围绕在此。我有两个表:选择,其中id =来自其他选择的多个

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选择所有的行。 idmenu首先从menu其中nr = 10(或任何号码,我把我的用PHP,SQL)

我真的不能绕到我的头所有的工会,LEFT JOINS选择*,HAVING和东西...

谢谢

编辑:谢谢大家,我的耻辱可以只选择一个好的:)

回答

2

这就是你”再问?以下内容将返回mi在menu.id和nr = 10的内容中的所有行。

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

这将起作用,但JOIN更有效率。 – 2010-01-29 17:02:39

+0

@Winston,他是第一个尝试帮助并且比你更需要声望的人:D尽管也感谢你的解决方案,但是也得到了投票 - 我们每天以+/- 500次点击的方式与内部选择最多35项,所以效率不是这里的事情:] – 2010-01-29 17:07:42

+1

@Adam - 虽然它可能不重要**这个**时间,但也许有助于理解这两种解决方案的差异,以便您可以在更广泛的工具你的处置*下一个*时间。 – 2010-01-29 17:10:44

0

SELECT * FROM内容其中MI IN(SELECT ID FROM菜单其中NR = 10)

0

未测试

SELECT内容。* FROM内容,菜单WHERE menu.nr = 10和内容。 MI = menu.id

选择C *,menu.nr FROM菜单LEFT JOIN含量为C ON menu.id = c.mi WHERE menu.nr = 10

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

UPDATE:

在回答您的意见,您可能会发现一个W3 Schools section on SQL JOINS有用的资源开始使用。

+0

谢谢你,尽管我选择了更简单的寻找答案,我会研究你的回应,尝试理解并从中吸取教训:] – 2010-01-29 17:08:11