Выберите, где id = несколько от другого выбора - PullRequest
0 голосов
/ 29 января 2010

Я устал и не могу обернуть голову вокруг этого. У меня есть две таблицы:

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 из menu, выбрав * из menu, где nr = 10 (или любое число, которое я положил в свой sql с PHP)

Я действительно не могу обернуть голову вокруг всех этих СОЮЗОВ, ЛЕВЫХ СОЕДИНЕНИЙ, ИСПОЛЬЗОВАНИЯ и прочего ...

Спасибо

Редактировать: Спасибо ВСЕМ, позор, я могу выбрать только один товар:)

Ответы [ 4 ]

7 голосов
/ 29 января 2010
SELECT C.* FROM content C
INNER JOIN menu ON C.mi = menu.id AND menu.nr = 10;

UPDATE:

В ответ на ваш комментарий вы можете найти раздел W3 Schools по SQL JOINS полезным ресурсом, с которого можно начать.

2 голосов
/ 29 января 2010

Это то, что вы просите? Следующее вернет все строки в содержимом, где mi находится в menu.id и nr = 10.

select *
from content
where mi in (select id from menu where nr=10)
0 голосов
/ 29 января 2010

непроверенных

ВЫБРАТЬ содержимое. * ИЗ содержимого, меню ГДЕ menu.nr = 10 И content.mi = menu.id

или

ВЫБРАТЬ c. *, Menu.nr ИЗ меню ВЛЕВО СОЕДИНЯЕТСЯ, КАК ВКЛЮЧЕНО menu.id = c.mi ГДЕ menu.nr = 10

0 голосов
/ 29 января 2010

ВЫБРАТЬ * ИЗ содержимого, ГДЕ mi IN (ВЫБЕРИТЕ идентификатор ИЗ меню, ГДЕ nr = 10)

...