我有一个如下所示的mysql表(cat_with_desc),它包含类别和父类别。
例如:笔记本电脑的父母(4)是计算机(1)
通过使用该表,我设法显示所有分层数据,如下所示。
SELECT
CONCAT_WS('-',t1.id,t1.name) AS lev1,
CONCAT_WS('-',t2.id,t2.name) AS lev2,
CONCAT_WS('-',t3.id,t3.name) AS lev3
FROM cat_with_desc AS t1
LEFT JOIN cat_with_desc AS t2 ON t2.parent_cat_id = t1.id
LEFT JOIN cat_with_desc AS t3 ON t3.parent_cat_id = t2.id;
但我不需要lev1中的lev2和lev3数据以及lev2列的lev3数据。 EX:4-Laptop,5-Desktop和6-Touch Screen不需要在lev1列中。
这是我需要得到的最终结果。
任何建议都会很明显。谢谢。 (不要建议我在这里使用LIMIT。:D)
答案 0 :(得分:1)
只需使用parent_id
进行过滤:
SELECT CONCAT_WS('-', t1.id, t1.name) AS lev1,
CONCAT_WS('-', t2.id, t2.name) AS lev2,
CONCAT_WS('-', t3.id, t3.name) AS lev3
FROM cat_with_desc t1 LEFT JOIN
cat_with_desc t2
ON t2.parent_cat_id = t1.id LEFT JOIN
cat_with_desc t3
ON t3.parent_cat_id = t2.id
WHERE t1.parent_cat_id = 0;