2011-11-16 59 views
0

我從一個我從別人繼承的項目中有一個名爲'categories'的MYSQL表。在MYSQL結果中從表中檢索父類別名稱

id   parent_id  name 
1   NULL   Travel 
2   NULL   Sleep 
3   NULL   Eat 
4   NULL   Bath 
5   1    Prams 
6   1    Travel Systems 
7   2    Cots 
8   3    High Chairs 

該表顯然比這個大得多,但你得到了一般的想法。我有一個MYSQL語句,將此表與其他類別,品牌和產品表結合在一起,但基本上我想列出上表中的父類別名稱與語句中的子類別。我該怎麼做呢?

我現在的說法是這樣的:

SELECT brands.name, products.name, categories.id, categories.name, brands.id, 
FROM `products` , `brands` , `categories` 
WHERE products.brand_id = brands.id 
AND products.category_id = categories.id 
AND brands.name = '$brand' 
ORDER BY categories.name, products.name 

如何檢索結果中的父類的名字呢? 例如,如果產品是嬰兒車,我怎樣輸出「旅行」。我可以在循環中執行單獨的MYSQL語句,但我想避免這種情況。這可能是一個愚蠢簡單的問題(在這種情況下,我爲因腦死亡而道歉)或者更復雜一點!謝謝。

回答

1

首先,你需要知道當前類的父ID,然後該ID獲得的名稱,你可以以這種方式使用子查詢:

SELECT name FROM categories WHERE id = (SELECT pid FROM categories WHERE name = $brand) 

編輯:既然你需要得到類別和子類別名稱在同一行中給定子類別ID,請嘗試此操作:

SELECT sc.name AS subcategory, c.name AS category 
FROM categories sc 
LEFT JOIN categories c ON c.id = sc.parent 
WHERE sc.id = $subcategory_id 
+0

謝謝。我們知道列出的每個產品的parent_id和子類別名稱。我想列出與子類別一起列出的每種產品的父類別。有沒有一種方法,我可以做我的查詢上面,我的查詢檢索類別名稱(即從category.parent_id = category.id獲取category.name) – iagdotme

+0

這是一個不同的問題,請參閱我上面的新答案:-) – Flupkear

+0

這很難解釋。類別表在同一個表中具有類別和「子類別」。例如,前4個是「父類別」(它們的父代ID設置爲NULL),其餘的是「子類別」。因此,「高級椅子」的父類別是「吃」,因爲父級ID是「3」。說實話,我討厭桌子的結構,因爲它讓我的生活變得很困難! – iagdotme