【发布时间】:2021-12-22 14:22:02
【问题描述】:
我想输出分类名称,每个分类中的子分类名称,以及每个分类和每个子分类中的文章。
输出应在 HTML 中的<ul> 和内部<ul> 标记中。
下面是输出的样子:
我有这 5 张桌子:
table_article_categories(articlecat_id, parent_id, articlecat_status, ...)
table_article_to_article_categories(articlecat_id, articles_id)
table_articles(articles_id, articles_status, ...)
table_articles_description(articles_id, language_id, articles_heading_title, ...)
table_article_categories_description(articlecat_id, articlecat_name, language_id, ...)
到目前为止,我已经编写了这个 SQL:
SELECT
ac.parent_id,
ac.articlecat_id,
a.articles_id,
ad.articles_heading_title AS article_name,
acd.articlecat_name
FROM
table_article_categories AS ac
LEFT JOIN
table_article_to_article_categories AS atac
ON
atac.articlecat_id = ac.articlecat_id
LEFT JOIN
table_articles AS a
ON
a.articles_id = atac.articles_id
AND
a.articles_status = 1
LEFT JOIN
table_articles_description AS ad
ON
ad.articles_id = a.articles_id
AND
ad.language_id = 1
INNER JOIN
table_article_categories_description AS acd
ON
acd.articlecat_id = ac.articlecat_id
AND
acd.language_id = 1
WHERE
ac.parent_id = 99 # --- This is the root article-categori-id ---
AND
ac.articlecat_status = 1
AND
ac.articlecat_id != 77 # --- This is an excluded article-categori-id ---
ORDER BY
acd.articlecat_name ASC,
article_name ASC
【问题讨论】:
-
如果您的查询正确并返回结果,那么您需要循环遍历结果
-
(1) 请告诉我们你做了什么来用
- 显示结果; (2) 与其在单个查询中进行,为什么不在单独的、多个 查询中循环呢?
-
文章有每种语言的描述,类别有我系统中可用的每种语言的描述/名称 - SQL 查询不必是递归的,我只是想也许 PHP 代码可以输出 HTML 时递归 - 但这不是必需的
-
将其分解为几个部分:1)您需要递归(php 或 sql)来按顺序获取类别。 2)孤儿文章总是排在类别列表之后吗? 3) 使用前两步收集的 id 来获取特定于语言的信息。 KenLee 的观点是不要试图一口气获得所有信息。得到它,因为你需要它。但试图回答你的问题的问题在于,你实际上有许多不同的概念需要答案。如果您可以将问题集中在其中一件事情上,我们可以为您提供更好的帮助。
-
@KenLee 可能会,但可能不会。您的 OP 可能会更好地点击。我鼓励你把它带回来:) 更多的想法总是更好的。
标签: php mysql sql recursion tree-structure