我想检索具有给定父类别的所有子类别,并且我想将我的产品表加入到该结果中。结果应该是一个面包屑导航,用户可以在其中单击父类别并检索该类别中的所有产品及其子类别。
Breadcrumb 看起来像这样:Electronic >> Music >> MP3-Player >> Flash
如果用户点击“音乐”,结果应该包含“音乐”、“MP3 播放器”和“Flash”类别中的所有产品。
我使用嵌套集,但我发现用复杂的查询处理它真的很困难。
我的数据库如下所示:
category_table:ID / 名称 / lft / rgt products_table:ID / Title / description / pic / category_id / ...
我的查询现在看起来像这样:
$result=mysql_query('SELECT *, node.id, node.name
FROM category AS node,
category AS parent,
category AS sub_parent,
(
SELECT node.name
FROM category AS node,
category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.id = 23
GROUP BY node.name
ORDER BY node.lft
)AS sub_tree JOIN products ON products.id = id
WHERE node.lft BETWEEN parent.lft AND parent.rgt
AND node.lft BETWEEN sub_parent.lft AND sub_parent.rgt
AND sub_parent.name = sub_tree.name
GROUP BY node.name
ORDER BY node.lft;') or die(mysql_error());
但这给了我错误“#1104 - SELECT 将检查超过 MAX_JOIN_SIZE 行;检查您的 WHERE 并使用 SET SQL_BIG_SELECTS=1 或 SET MAX_JOIN_SIZE=# 如果 SELECT 没问题”。我不明白。