2017-04-01 2 views
2

Ich habe einen Tabellennamen tbl_section diese Tabelle gefällt ist, dassMysql wählen einziges Kind aus einer Tabelle Baum

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 

ich mit db_parent=NULL nur die Kinder einer Zeile auswählen möchten. Aus der obigen Tabelle wird das Ergebnis nur Cables und Lamps sein.

Ich versuche, mit dieser Abfrage

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 

Aber diese Abfrage gibt Sie mir ein Ergebnis, das ich mich aus dieser Abfrage

Mechanical,Plumbing,Lamps,HDMI 

habe nicht diese das Ergebnis will Wie kann ich dieses Problem lösen und haben nur die Kinder, die einen Elternteil haben mit db_parent = NULL?

+0

Warum jo tun, um eine 'LEFT JOIN'? –

Antwort

2

einfach durchführen ein JOIN, wird dies bereits Zeilen herauszufiltern, die keine Eltern haben. Des Weiteren auch Sie getauscht Sie Eltern-Kind-Beziehung: sollte es s1.db_parent = s2.db_secid sein, nicht 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

danke das lösen mein Problem – jad

2

könnten Sie innere verwenden beitreten

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

Sie antworten auch Hilfe danke – jad

Verwandte Themen