2017-08-20 98 views
0

我有以下查詢,其中列出了與其相關的類別和父類別。MYSQL獲取主要類別

t.term_id is the category ID 
tx.parent is the ID of category from which they depend from. 
Main Categories have parent id= 0 

而這是問題,因爲查詢不顯示主要類別,但只是子類別。基本上它只顯示父> 0的記錄,但我需要父=> 0。我已經把它放在哪裏,但它不起作用。

SELECT t.term_id, t.name, tx.parent, tm.name 
from mg_terms t 

join mg_term_taxonomy tx 
on tx.term_id = t.term_id 

join mg_terms tm 
on tm.term_id = tx.parent 

where tx.taxonomy='product_cat' 
ORDER BY `tx`.`parent` DESC 

任何幫助獲得主要類別(父= 0)以及?

+1

嗯,如果我理解正確的話,你需要的是'LEFT JOIN mg_terms tm',而不是'JOIN mg_terms tm' – sagi

+0

哦,最有可能的。我很快來到 – Alex

回答

0

你可以使用UNION的選擇並加入了兩個結果:

SELECT t.term_id, t.name, tx.parent, tm.name 
FROM mg_terms t 
JOIN mg_term_taxonomy tx ON tx.term_id = t.term_id 
JOIN mg_terms tm ON tm.term_id = tx.parent 
WHERE tx.taxonomy='product_cat' 
UNION 
SELECT t2.term_id, t2.name, tx2.parent, null 
FROM mg_terms t2 
JOIN mg_term_taxonomy tx2 ON tx2.term_id = t2.term_id 
WHERE tx2.taxonomy='product_cat' AND t2.parent = 0 
ORDER BY parent 

或mg_terms T和左選擇全部加入mg_terms商標,如還建議史記。

SELECT t.term_id, t.name, tx.parent, tm.name 
FROM mg_terms t 
JOIN mg_term_taxonomy tx ON tx.term_id = t.term_id 
LEFT JOIN mg_terms tm ON tm.term_id = tx.parent 
WHERE tx.taxonomy='product_cat' 
ORDER BY `tx`.`parent` 
+0

確認,它需要LEFT JOIN而不是JOIN。感謝羅馬。 – Alex