Ich versuche, eine Unterabfrage zu referenzieren, um den Wert in einer CASE-Anweisung zu verwenden. Aber innerhalb des SELECT-Statements kann ich nicht auf next_creation
verweisen, da es einfach darauf besteht, dass die Spalte nicht existiert. Ich dachte daran, die gesamte Abfrage in eine CASE-Anweisung zu packen, aber die CASE-Anweisung würde erfordern, dass ich die Abfrage mehrmals ausführe, und das scheint albern.
Ich habe auch versucht, ein CROSS JOIN
mit der Unterabfrage zu machen, aber es wird über das Nichtverweisen von tg in der Unterabfrage beschwert. Kernelfehler: FEHLER: Ungültige Referenz auf FROM-Klausel-Eintrag für Tabelle "tg" HINWEIS: Es gibt einen Eintrag für die Tabelle "tg", aber er kann nicht von diesem Teil der Abfrage aus referenziert werden.
Ich habe auch versucht, ein WITH
zu verwenden, aber es hat im Grunde das gleiche Ergebnis wie CROSS JOIN. Also habe ich sogar zwei WITH
-Klauseln angehängt, wobei die erste Abfrage die gleiche wie die Haupt-OUTER
-Abfrage war, damit die zweite Klausel die Werte verwenden konnte...ich habe einen Fehler erhalten.
Gibt es eine Möglichkeit, die Unterabfrage zu referenzieren, z. B. indem man sie in einer Variablen festhält, um sie zu verwenden, während die Unterabfrage trotzdem das tg
aus der äußeren Abfrage nutzen kann?
SELECT *, (
SELECT
tg2.created
FROM tocom t
LEFT JOIN tocom_g_assoc ON tocom_g_assoc.table_id = t.id AND tocom_g_assoc.tocom_g_id != tg.id
LEFT JOIN tocom_g tg2 ON tg2.id = tocom_g_assoc.tocom_g_id
WHERE t.id IN ( SELECT t_id FROM tocom_g_assoc WHERE tocom_g_assoc.tocom_g_id = tg.id )
AND tg2.createdt > tg.created
AND tg2.created IS NOT NULL
ORDER BY tg2.created ASC
LIMIT 1
) next_creation
/*
Hier möchte ich eine CASE-Anweisung machen, aber rein hypothetisch würde eine einfache next_creation - tg.dissolved_at ausreichen
*/
FROM wp p
LEFT JOIN tocom_g tg ON tg.id = p.tocom_g_id
WHERE tg.dissolved_at IS NOT NULL