Mehrdeutige Feldnamen in Joins
Firebird weist nicht qualifizierte Feldnamen in einer Abfrage zurück, wenn diese Feldnamen in mehr als einem an einem Join beteiligten Dataset vorhanden sind.Dies gilt sogar für innere Equi-Joins, bei denen der Feldname in der ON
-Klausel wie folgt vorkommt:
select a, b, c
from TA
join TB on TA.a = TB.a;
Von dieser Regel gibt es eine Ausnahme: Bei Named-Column-Joins und Natural-Joins darf der unqualifizierte Feldname einer am Matching-Prozess beteiligten Spalte legal verwendet werden und bezieht sich auf die gleichnamige zusammengeführte Spalte.Bei Joins mit benannten Spalten sind dies die Spalten, die in der USING
-Klausel aufgelistet sind.Bei natürlichen Verknüpfungen sind dies die Spalten, die in beiden Beziehungen denselben Namen haben.Beachten Sie aber bitte noch einmal, dass, insbesondere bei Outer-Joins, ein einfacher colname
nicht immer gleich links.colname
oder right.colname
ist.Typen können unterschiedlich sein und eine der qualifizierten Spalten kann NULL
sein, während die andere nicht ist.In diesem Fall kann der Wert in der zusammengeführten, nicht qualifizierten Spalte die Tatsache maskieren, dass einer der Quellwerte fehlt.