Vinzenz Mai: Join Problem über ODBC

Beitrag lesen

Hallo dedlfix,

SELECT flight.time, b.name AS destination FROM flight INNER JOIN airport AS b ON (b.ID=flight.to) INNER JOIN plane AS c ON (c.ID=flight.plane) WHERE from=1

Kann es sein, dass to ein reserviertes Wort ist und es deswegen nicht will?

to ist in Jet-SQL ein reserviertes Wort.

Auf alle Fälle dürften `` nicht die für Access passenden Bezeichner-Quote-Zeichen sein.

Übliche Bezeichner-Quote-Zeichen bei Jet-SQL sind (wie bei T-SQL) die eckigen Klammern.

Vielleicht musst du einfach nur die Klammern weglassen.

Der QBE-Editor (Query by example) von Access erzeugt typischerweise sehr viele (auch redundante) Klammern. Nach meinen Erfahrungen erhält man diese Meldung, wenn man die einzelnen Join-Operationen *nicht* klammert. Die Klammerung (hier bei zwei INNER JOIN-Operationen) muss so erfolgen, wie im Artikel Fortgeschrittene Jointechniken verwendet, d.h. die Reihenfolge der Joins *muss* bei Jet-SQL durch die Klammerung vorgegeben werden:

SELECT  
    flight.time,  
    b.name AS destination  
FROM (  
        flight  
    INNER JOIN  
        airport AS b  
    ON  
        b.ID = flight.[to]  
)  
INNER JOIN  
    plane AS c  
ON  
    c.ID=flight.plane  
WHERE  
    [from] = 1;  

Natürlich kann man hier auch umgekehrt herum klammern.

Anmerkungen: Statt b und c greife lieber zu etwas sprechenderen Aliasnamen.

Freundliche Grüße

Vinzenz