Ich bin etwas neu zu den fortgeschritteneren Themen von PLSQL, also hoffentlich kann mir jemand helfen.Rekursive Abfrage in Oracle
Das Problem: Ich habe eine Tabelle mit Nachrichten zwischen einem Administrator und Benutzern gesendet. Die Tabelle hat ein Message_Parent mit FK für dieselbe Tabelle message_id-Feld: Wenn das Feld ausgefüllt ist, bedeutet dies, dass die Nachricht als Antwort auf eine vorherige Nachricht gesendet wurde. Ich muss alle Nachrichten auswählen, die Teil derselben Konversation sind, und sie anzeigen. Kann dies mit einer einzigen Abfrage durchgeführt werden oder brauche ich eine Prozedur, um mit dieser Art von Logik umzugehen? Wie ich verstehe, braucht es rekursiv zu sein, da die message_id, durch die ich bin immer auf der Suche
Beispiel Nachrichten Tabelle ändert sich:
|message_id|parent_id|message_content|
|----------|---------|---------------|
|101 |100 | foo |
|100 |97 | bar |
|99 |(null) | Left out |
|97 |(null) | baz |
Also die richtige Abfrage auszuwählen sollte message_content zurückkehren "baz", "bar" und "foo", aber nicht "Ausgelassen" (da baz die ursprüngliche Nachricht ist). Dies wäre einfach, wenn z.B. nur zwei Nachrichten, die miteinander verbunden werden können oder z.B. Eine thread_id-Spalte, die alle Nachrichten im selben "thread" verlinkt, aber mit der parent_id-Datei wird ständig verschoben. Ich habe Probleme, es herauszufinden.
Welche Oracle-Version verwenden Sie? –
12c Standardausgabe – taurijuhkam