2017-04-01 6 views
2

からの唯一の子を選択し、私は、この表には、私がdb_parent=NULLと行の子だけを選択したいというMySQLがテーブルツリー

db_secid db_secname db_secdesc db_parent 
1   Electrical     NULL 
2   Mechanical     NULL 
3   Plumbing     NULL 
4   Cables      1 
5   Lamps      1 
6   HDMI      4 

のようなものですテーブル名tbl_sectionを持っています。上の表から、結果はCablesLampsになります。

どのように私はこの問題を解決することができます

Mechanical,Plumbing,Lamps,HDMI 

私はこのクエリから、私が持っている。この結果を望んでいない私は、このクエリ

select 
s1.db_secname 
from tbl_section as s1 
LEFT JOIN tbl_section as s2 
ON 
s1.db_secid=s2.db_parent 
WHERE s2.db_parent IS NULL 

てみてくださいしかし、このクエリは私に結果を与えると、親がdb_parent = NULLの子のみがいますか?

+0

なぜ城が 'LEFT JOIN'をしますかに参加しますか? –

答えて

2

単にが、これはすでにを持っていない行を除外します、JOINを行います。さらに、あなたもあなたの親子関係をスワップ:それはs1.db_parent = s2.db_secid、ないs1.db_secid=s2.db_parentする必要があります:

SELECT s1.db_secname 
FROM tbl_section AS s1 
    JOIN tbl_section AS s2 ON s1.db_parent = s2.db_secid 
WHERE s2.db_parent IS NULL
+0

これは私の問題を解決していただきありがとうございます – jad

2

あなたが内部使用することができ

select t1.db_secname 
from tbl_section as t1 
inner join tbl_section as t2 
     on t2.db_parent is null and t2.db_secid = t1.db_parent 
+0

あなたはまたありがとう – jad