2014-11-04 45 views
-1

我如何選擇列類別至極兩種SubCat & MainCat從表引用本身叫cat表引用本身,MySQL和主鍵和在同一個表的外鍵,SELECT語句

其中外鍵(maincat_id)參考在(cat_id),其是PrimeryKey

表在數據庫:

 
cat_id catname  maincat_id cat_type 
1   hello   NULL   1  
2   one   3   2 
3   test   1   2 
4   te3   3   2 

爲Y ou看看是否cat_type=1因此它是SubCat

我只需要表中選擇所有SubCat和它所屬的MainCat,因爲這樣:

 
catname  Root_name 
one   test   
test   hello   
te3   test   

更多信息: 我們有一個叫做「貓」,在其類別中的一個表有(主類別)和(子類別),這些樹使得小樹(只有一層深度)。

回答

2

你可以使用一個簡單的內連接此:

SELECT t1.catname AS Category, t2.catname AS Subcategory 
FROM cat t1 INNER JOIN cat t2 
ON t1.cat_id = t2.maincat_id 
WHERE t1.cat_type = 1 

畢竟,我希望我理解你的問題吧,這是你所需要的。

小提琴:http://sqlfiddle.com/#!2/94e65/18

+0

什麼是{您SUBCAT}? {你的MainCat}? – 2014-11-04 11:15:44

+0

它的數據庫表,名稱 – 2014-11-04 11:16:33

+0

正如我所說,這是一個名叫'貓'的桌子男人。 – 2014-11-04 11:19:28

0

用戶可以自加入這個

select c.catname as catname ,m.catname as Root_name from cat as c, cat as m 
where c.maincat_id = m.cat_id && c.cat_type=2; 
+0

我說我的表名是(貓)。所以我只是把它放進去,而不是工作,給了我:#1054 - '字段列表'中的未知列'c.catname' – 2014-11-04 11:18:09

+0

從cat選擇c.catname,m.catname作爲c,cat作爲m 其中c。 maincat_id = m.cat_id && c.cat_type = 2; – user3510665 2014-11-04 11:23:59

+0

請看這個http://sqlfiddle.com/#!2/d60ed1/4/0 – user3510665 2014-11-04 11:37:59

相關問題