SQL-Fehler durch die Kombination expliziter und impliziter Verknüpfungen
Die Kombination expliziter und impliziter JOINs in einer einzigen SQL-Abfrage kann zu Fehlern führen. Das folgende Beispiel veranschaulicht dieses Problem:
1 2 3 4 5 6 7 |
|
Diese Abfrage erzeugt Fehler sowohl in MSSQL 2000/2008 als auch in MySQL:
Das Syntaxproblem verstehen
Der Fehler ist auf einen Prioritätskonflikt zurückzuführen. In SQL hat das Schlüsselwort JOIN
Vorrang vor der durch Kommas getrennten Tabellenauflistung in der Klausel FROM
. Der Alias e1
wird in der ON
-Klausel von JOIN
nicht erkannt, da der Parser die FROM
-Klausel noch nicht vollständig verarbeitet hat. Im Wesentlichen ist e1
an der Stelle undefiniert, an der in der JOIN
-Bedingung darauf verwiesen wird.
Ruhezustand und Join-Syntax
Es gibt ein bekanntes Problem in Hibernate hinsichtlich der Generierung falscher SQL beim Mischen expliziter und impliziter JOINs. Obwohl es eine mögliche Problemumgehung ist, Hibernate zu zwingen, ausschließlich explizite JOINs zu verwenden, sind spezifische Details dazu derzeit aufgrund von Einschränkungen in der zugänglichen HQL-Dokumentation nicht verfügbar.
Das obige ist der detaillierte Inhalt vonWarum verursachen explizite und implizite JOINs SQL-Fehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!