2009-07-20 177 views
1

我有三個表格:類別,子類別和子類別。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

上面所列內容缺少CD和書籍類型,加上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
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 
+0

感謝您的快速響應。這幾乎是正確的,除了爲沒有子項的類別顯示category_name兩次。具有子類別和子類別的類別正在正常工作。 – Dan 2009-07-20 16:47:48