0

私は疲れていて、これについて頭を包むことができません。私は2つのテーブルを持っています:

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= menu. id)からすべての行を選択する必要がありますが、 . を選択する必要がありますmenu。最初idからwhere = 10 (または、PHP を使用して SQL に入力した任意の数値)から選択します。menu*menunr

UNIONS、LEFT JOINS、HAVING などのすべてに頭を悩ませることはできません...

ありがとうございました

編集: ありがとうございます。残念ながら、良いものを1つだけ選ぶことができます:)

4

4 に答える 4

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

アップデート:

あなたのコメントに応えて、SQL JOINS に関する W3 Schools セクションが、始めるのに役立つリソースであることに気付くかもしれません。

于 2010-01-29T17:01:43.480 に答える
2

これはあなたが求めているものですか?以下は、コンテンツの mi が menu.id にあり、nr=10 であるすべての行を返します。

select *
from content
where mi in (select id from menu where nr=10)
于 2010-01-29T16:59:30.963 に答える
0

テストされていない

SELECT content.* FROM content, menu 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

于 2010-01-29T17:00:24.240 に答える
0

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

于 2010-01-29T17:00:07.793 に答える