2012-03-26 10 views
2

Ich bin ein Anfänger, wenn es um SQL kommt, also vergib mir, wenn dies offensichtlich erscheint.MySql Join auf der gleichen Tabelle

Ich habe mir alle Antworten angesehen, die ich hier gefunden habe und habe versucht, sie anzupassen, um mit meinen Daten zu arbeiten, aber aus irgendeinem Grund sind die Ergebnisse nie richtig.

Ich möchte einfach die Daten in einer geordneten Liste mit Eltern (Datensätze mit 0 für parent_id) mit jeweils Geschwistern darunter zu extrahieren.

Ich kann Bilder noch nicht posten, da ich nicht lange genug Mitglied war, aber meine Tabellenstruktur ist ziemlich einfach.

id, subject, parent_id 

Subjekte, die Eltern sind, haben eine parent_id von Null.

Dank

Steve

PS: Ich habe versucht, diese Lösung, aber es für mich nicht richtig funktionieren. join with same table in mysql?

+0

was Ausgang aus dieser Tabelle gewünscht wird? Kannst du das er-klä-ren ? –

+0

Ich möchte alle Themen von gruppiert nach Parent_id zurückgegeben. Eltern haben parent_id von null, also wäre es etwas wie parent1-> erstes Kind von parent1 -> zweites Kind von parent1. Dies würde für alle Eltern wiederholt werden. – SteveF

Antwort

1

So etwas wie

SELECT p.subject AS parent, 
group_concat(c.subject) AS children 
FROM yourtable AS p 
LEFT JOIN yourtable AS c 
ON (p.id = c.parent_id and p.parent_id = 0) 
GROUP BY p.id;` 
+0

Ich habe es versucht, aber es hat keine Daten zurückgegeben. Nur ein leeres Recordset. – SteveF

+0

Oh wait, sorry, hatte einen Tippfehler in der Join-Bedingung. Probieren Sie es jetzt. – KernelM

+0

Ich änderte Ihre Vorschläge ein wenig und es funktionierte irgendwie, aber es gab keinen Elternteil mit keinen Kindern zurück. 'selektiere pject als übergeordnete, group_concat (csubject) als Kinder von Subjekten als p joiniere Subjekte als c on (p.id = c.parent_id und p.parent_id = 0) group by p.id' – SteveF

1

EXACT und je nach Bedarf

select s1.id, s2.name from tab1 s1 LEFT JOIN tab1 s2 on s1.id = s2.parent 
+0

Ich habe Ihren Vorschlag versucht, aber das hat nicht funktioniert. Es zog nur 3 Eltern zurück und einer von ihnen war ein Duplikat. – SteveF

+0

@ user1292262 Hey, ich habe die Antwort aktualisiert, check it out, ich habe es getestet, jetzt funktioniert es gut –

+0

Ich änderte Ihre Vorschläge ein wenig und es funktioniert irgendwie, aber es gab keinen Elternteil mit keinen Kindern zurück. 'Wählen Sie pject als übergeordnete, group_concat (c inject) als Kinder aus Fächern als p Join Themen als c on (p.id = c.parent_id und p.parent_id = 0) Gruppe von p.id' – SteveF

Verwandte Themen