2009-07-20 16 views
1

カテゴリ、サブカテゴリ、およびサブカテゴリの3つのテーブルがあります。私は同じようにフォーマットされるリストを表示したいMySQLが結合してカテゴリ、サブカテゴリ、およびサブカテゴリを表示します

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

私は、彼らが子供を持っているとき、私は取得しています何例えば、自分でカテゴリの名前を除いてすべてを表示することができたのです。

上記のリストには、cdsおよびbooksカテゴリ、さらにcds> new ageサブカテゴリがありません。

私が使用しているクエリは次のとおりです。

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を子供がいないカテゴリに対して2回表示している点を除いて、ほぼ正しいです。しかし、サブカテゴリとサブサブカテゴリを持つカテゴリは完全に機能しています。 – Dan

+0

ああ待って、彼らは完全に動作していない。 cds> new age> cod> new age> whale noiseの代わりに、CD> WhaleノイズとCds> New Age> Whaleノイズとして表示されています。 – Dan

+0

@ダン:今すぐお試しください。 – Quassnoi

関連する問題