Ich habe Probleme beim Schreiben einer Abfrage. Ich habe eine Unterstützung namens "MYTABLE" und es hat eine Spalte namens "TABLENAME", die einen oder mehrere Tabellennamen enthalten kann. Mehrere Tabellen sind durch Kommata getrennt.Fehler beim Schreiben der SQL-Abfrage
Beispiel:
TBLUSER
TBLUSER, TBLACCOUNT
Ich versuche, eine Abfrage zu schreiben, die alle Einträge in der Tabelle MYTABLE identifizieren, die keine gültigen Tabellen in der Datenbank sind. Ich konnte die Folge schreiben ....
SELECT *
FROM MYTABLE T1
LEFT outer JOIN ALL_TAB_COLS T2
ON ( upper(T1.TABLENAME) = upper(t2.Table_Name)
AND T2.Owner = 'ME'
)
WHERE TABLE_NAME IS NULL;
Und es funktioniert genau, wie ich will - aber es funktioniert nur, wenn der Eintrag in MYTABLE eine einzelne Tabelle enthält. Wenn mehrere Tabellen durch Kommas getrennt sind, schlägt es fehl. Meine SQL-Kenntnisse sind etwas mangelhaft und mein natürlicher Instinkt ist es, "Do a For Each" zu tun, aber ich denke, das ist nicht der richtige Ansatz (und ich habe keine Ahnung, wie man das in SQL macht).
Warum in der Welt würden Sie mehrere Tabellen in einer einzigen Zeile behalten? – TheTXI
Umgekehrte Normalisierung, TheTXI. Es ist der letzte Schrei. – Welbog
Ich glaube, der ursprüngliche Gedanke dahinter war, dass es für "nicht-technische" Benutzer einfacher wäre, die Daten zu ändern, wenn sie alles nur in einem Feld eingeben könnten. Ich bin mir nicht sicher, ob ich dem zustimme oder nicht; aber leider ist das "wie es ist". Wenn eine dieser Tabellen falsch geschrieben wird, führt dies natürlich zum Absturz der Anwendung - ich hatte gehofft, eine SQL-Abfrage schreiben zu können, um die Zeilen zu identifizieren, die einen Absturz verursachen. –