2014-03-03 24 views
1

我的表結構(對不起我的英語不好):如何選擇兩個列具有相同的價值,而忽略列如果MySQL有父ID

enter image description here

我要讓類別和類別下。例如,如果記錄具有父級ID,則表示類別屬於類別。我想要如果任何記錄有父母身份證,顯示正確。

我測試:

select tb1.id,tb1.catname,tb2.id,tb2.catname from adsystem.cat as tb1 inner join adsystem.cat as tb2 on tb1.id=tb2.parentid 

但輸出是:

enter image description here

和測試:

select tb1.id,tb1.catname,tb2.id,tb2.catname from adsystem.cat as tb1 left join adsystem.cat as tb2 on tb1.id=tb2.parentid 

這幾乎是:看

enter image description here 我不想顯示貓下紅線:

enter image description here

如果輸出這是正確的,我可以做出正確的用PHP

我想這樣的準確輸出(而這僅僅是Photoshop中):

enter image description here

+0

爲什麼要這樣做的顯示順序回事?如果您最終在兒童記錄中獲得不止一個層次,會發生什麼情況?例如一棵3+深的樹? –

+0

我只想製作2個關卡類別。我想如果我使分類分類表和類別下,我可以得到答案簡單 –

回答

1

這就是知道爲Adjacency List,它看起來就像你正在試圖獲得從Y全樹視圖我們的清單。

這應該是你在找什麼

SELECT t1.catname AS lev1, t2.catname as lev2, t3.catname as lev3 FROM adsystem.cat AS t1 
LEFT JOIN adsystem.catAS t2 ON t2.parentid = t1.id 
LEFT JOIN adsystem.catAS t3 ON t3.parentid = t2.id 

如果希望不拘泥於那麼我會建議研究的Nested Set更靈活的結構Adjacency List將正常進行簡單固定的數據,但是模型。

編輯:

你最想要的圖像中的精確的輸出,這是不可能與你的表的模式(這不是真的可能),不存在相關性,以支持(聯/加盟)和排序。你'可以'以一種討厭,笨拙的方式來做,這將是一個緩慢而且非常糟糕的主意,你需要在運行時在一個新列中創建自己的相關引用,然後通過它進行排序 - 通過字符串concat或存儲過程。

爲什麼不能使用正常的鄰接列表結構,並以乾淨的方式獲取數據,然後通過應用程序邏輯對其進行處理?

+0

感謝您的答案,我測試您的查詢和輸出喜歡我的查詢(圖片與紅線下) –

+0

對不起,但你的英語是非常糟糕的而且很難理解你要求的內容。我的查詢可以讓你一次得到所有的孩子。爲什麼在數據庫查看器中需要這種確切的輸出? – Steve

+0

我想要這個輸出爲用戶和廣告系統,我的腳本只需要兩個級別的貓,是的,我的英語是壞的:(你只看到我的最後一張照片後,你可以undrestand我的問題當然,我測試你的查詢,這個查詢顯示我的查詢完全是我的查詢(圖片用紅線)但我不想在第一列的貓下顯示 –

1

我想需要此查詢:

select tb1.id, 
    case when tb2.catname is null 
     then tb1.catname 
     else tb2.catname 
    end catname, 
    tb1.parentid 
from adsystem.cat as tb1 
left join adsystem.cat as tb2 on tb1.parentid = tb2.id 

也許我明白...

select tb1.id cat_id, tb1.catname cat, 
tb2.id subcat_id, tb2.catname subcat from 
(select distinct id, catname 
from adsystem.cat 
where parentid is null or parentid = '') tb1 
left join adsystem.cat as tb2 on tb2.parentid = tb1.id 
; 
+0

測試你查詢但輸出這個(不正確):http: //8pic.ir/images/92569074422097341725.jpg –

+0

您從photoshop得到的結果看起來像下面的查詢結果:select ad,catname,parentid from adsystem.cat tb1。是不是? – AppLend

+0

感謝您的幫助,我有categorie和在類別下,我測試你的查詢,但不正確的順序和名稱。請參閱第一貓和第二貓之下的記錄和第五貓之下 –

相關問題