Hello,
Ich hatte sowas hier neulich schon mal beantwortet. Das ganze nennt sich "self join" oder Selbstbezug. Man öffnet die Tabelle dazu zweimal in zwei verschiedenen Arbeitsbereichen, also unter verschiedenen Aliasen. Das funktioniert auch schon mit Mysql 3.23.x
Ich probier mal, ob ichs so zusammen bekomme
Deine Aufgabe:
SELECT cycle FROM contract WHERE id = $id wenn parent_id IS NULL, andernfalls
SELECT cycle FROM contract WHERE id = (SELECT parent_id FROM contract WHERE id = $id)
Es soll also nach Datensätzen mit id = $id gesucht werden, falls parent_id leer ist, andernfalls soll nach Datensätzen mit id = (SELECT ...) gesucht werden.
Select a.cycle, b.cycle from contract a, contract b where (a.id = $id and a.parent_id is NULL)
or (a.id = $id and a.parent_id is not null and b.id = a.parent_id);
Hier vorne könnte man dann noch ein if(a.parent_id is null, a.cycle, b.cycle) as CYCLE spendieren, um entweder nur a.cycle oder nur b.cycle zu haben.
Probier mal, was da rauskommt. Ich habe gerade keine geeignete Tabelle. Die muss ich erst basteln.
Ist ne spannende Sache das. Wenn wir es zusmman hinbekommen, kann ich mein CMS umbauen.
Welche Sortierung muss das ganze denn haben?
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau