0

我累了,我无法解决这个问题。我有两张桌子:

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. idmenu第一个选择where = 10 (或任何数字*,我用 PHP 把它放到我的 sql 中)menunr

我真的无法理解所有这些 UNIONS、LEFT JOINS、HAVING 和其他东西......

谢谢

编辑: 谢谢大家,可惜我只能选一个好的:)

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 * FROM content WHERE mi IN(SELECT id FROM menu WHERE nr = 10)

于 2010-01-29T17:00:07.793 回答
0

未经测试

选择内容。* 从内容、菜单 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 回答