Fehlerhafte Abfrage "Der mehrteilige Bezeichner konnte nicht gebunden werden" INNER JOIN

MitchAndi

Benutzer
Beiträge
6
Weiß jemand warum diese Abfrage nicht funktioniert?

SQL:
SELECT tblLandStamm.sLandStammID, tblLandStamm.sLand, tblSpesenSatzLandStamm.nSpesenSatzID, tblSpesenErfassungLand.anreise, tblSpesenErfassungLand.rueckreise, isnull(tblSpesenSatzLandStamm.nSpesenSatz, 0), tblSpesenSatzLandStamm.sGueltigAb FROM tblLandStamm INNER JOIN tblSpesenSatzLandStamm ON tblLandStamm.sLandStammID = tblSpesenSatzLandStamm.[_sLandStammID] ORDER BY tblLandStamm.sLandStammID

Die Fehlermeldung ist:
Meldung 4104, Ebene 16, Status 1, Zeile 2
Der mehrteilige Bezeichner 'tblSpesenErfassungLand.anreise' konnte nicht gebunden werden.
Meldung 4104, Ebene 16, Status 1, Zeile 2
Der mehrteilige Bezeichner 'tblSpesenErfassungLand.rueckreise' konnte nicht gebunden werden.

Das sind die beiden Felder die ich zur vorhandenen Abfrage hinzugefügt habe.
 
Werbung:
Ich habe den Fehler selbst mit MSAccess gelöst, indem ich die Abfrage nachgebaut habe:

SQL:
SELECT tblLandStamm.sLandStammID, tblLandStamm.sLand, tblSpesenSatzLandStamm.nSpesenSatzID, tblSpesenErfassungLand.anreise, tblSpesenErfassungLand.rueckreise, ISNULL(tblSpesenSatzLandStamm.nSpesenSatz, 0), tblSpesenSatzLandStamm.sGueltigAb
FROM tblLandStamm INNER JOIN (tblSpesenSatzLandStamm INNER JOIN tblSpesenErfassungLand ON tblSpesenSatzLandStamm.[_sLandStammID] = tblSpesenErfassungLand.[_sLandStammID]) ON tblLandStamm.sLandStammID = tblSpesenSatzLandStamm.[_sLandStammID]
ORDER BY tblLandStamm.sLandStammID;

Die Abfrage funktioniert nun. Jetzt fügte ich aber die Funktion ISNULL (was zuvor auch funktionierte) hinzu:
ISNULL(tblSpesenSatzLandStamm.nSpesenSatz, 0)

Es kommt jedoch diese Fehlermeldung:
Falsche Anzahl an Argumenten für Funktionen angegeben in Abfrageausdruck 'ISNULL(tblSpesenSatzLandStamm.nSpesenSatz, 0)'

Was ist nun der Fehler? Warum funktioniert "ISNULL" nicht mehr?
 
Sehr interessant. Ich kenne solche Konstrukte nicht. Und wenn es in Access geht, dann offenbar nur so halb.
Code:
SELECT tblLandStamm.sLandStammID,
       tblLandStamm.sLand,
       tblSpesenSatzLandStamm.nSpesenSatzID,
       tblSpesenErfassungLand.anreise,
       tblSpesenErfassungLand.rueckreise,
       ISNULL(tblSpesenSatzLandStamm.nSpesenSatz, 0),
       tblSpesenSatzLandStamm.sGueltigAb
  FROM tblLandStamm
 INNER JOIN(tblSpesenSatzLandStamm
            INNER JOIN tblSpesenErfassungLand
                    ON tblSpesenSatzLandStamm. [ _sLandStammID ]
                     = tblSpesenErfassungLand. [ _sLandStammID ]
            )
         ON tblLandStamm.sLandStammID = tblSpesenSatzLandStamm. [ _sLandStammID ]
 ORDER BY tblLandStamm.sLandStammID;
Ich hab mir mal erlaubt, das zu formatieren. Hilft mir gegen Augenkrebs.

Der Ausdruck innerhalb der Klammer ist kein vollständiges Select so wie ich es kenne und die Klammer hat keinen Alias, so dass die Objekte darin außen unbekannt sein könnten. Ich arbeite nicht mit MSSQL, daher kann ich Dir nicht sagen, ob soetwas erlaubt ist.
Die Fehlermeldung deutet darauf hin, dass selbst die Abfrageanalyse auf die Nase fällt und damit nichts anfangen kann.
 
Werbung:
Die Formatierung nimmt MSSQL an. Komisch finde ich die JOIN-Syntax, habe ich so noch nie gesehen. Ich würde immer explizit schreiben was ich selektiere, auch wenn es in einer Klammer steht.
 
Zurück
Oben