2010-01-29 143 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