MySQL加入显示类别,子类别和子子类别

时间:2009-07-20 16:26:37

标签: sql mysql

我有三个表:类别,子类别和子子类别。

我想显示一个格式为:

的列表
dvds
cds
cds > pop
cds > blues
cds > new age
cds > new age > whale noises
books
books > cowboys
books > zombies

当他们有孩子时,我已经设法显示除了他们自己的类别名称之外的所有内容,例如我得到的是:

dvds
cds > pop
cds > blues
cds > new age > whale noises
books > cowboys
books > zombies

以上列表缺少cds和图书类别,以及cds>新时代子类别。

我正在使用的查询是:

SELECT
  c.name AS c_name,
  sc.name AS sc_name,
  ssc.name AS ssc_name
FROM
  categories c
LEFT JOIN
  subcategories sc
  ON c.id = sc.category_id
LEFT JOIN
  subsubcategories ssc
  ON sc.id = ssc.subcategory_id

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

SELECT  *
FROM    (
        SELECT  DISTINCT
                c.name AS c_name,
                sc.name AS sc_name,
                ssc.name AS ssc_name
        FROM    categories c
        LEFT JOIN
                subcategories sc
        ON      c.id = sc.category_id
        LEFT JOIN
                subsubcategories ssc
        ON      sc.id = ssc.subcategory_id
        GROUP BY
                c.name, sc.name, ssc.name WITH ROLLUP
        HAVING  c_name IS NOT NULL
        ) q
ORDER BY
        c_name, sc_name, ssc_name