![]() |
Datenbank: MS Access • Version: 2003 • Zugriff über: ADO
SQL-Abfrage mit inner Join - Syntaxfehler
Ich versuche eine Abfrage auf eine SQL-Tabelle zu machen, aber irgendwie komme ich da nicht so recht weiter.
Die SQL-Abfrage so wie sie dort unten steht, soll angeblich funktioniert haben, aber bei mir gibt es eine Fehlermeldung, wenn ich versuche diese Abfrage auf eine Access-Datenbank abzusetzen. Ich habe mir das ganze in Access nachgebaut, jeweils eine Tabelle beleg, konto und buchung. Später soll es auf einem SQL-Server laufen.
SQL-Code:
Fehlermeldung:
select beleg.internebelegnummer, beleg.belegdatum, konto.kontonummer, konto.bezeichnung from beleg inner join buchung on beleg.dvbelegnummer=buchung.dvbelegnummer inner join konto on buchung.dvkontonummer = konto.dvkontonummer and where konto.klasse = 'K'
Synataxfehler (fehlender Operator)
SQL-Code:
Kann mir vielleicht bei der Gelegenheit nochmal einer das mit dem inner join erklären, das ist mir nicht wirklich klar.
'beleg.dvbelegnummer=buchung.dvbelegnummer inner join konto on buchung.dvkontonummer = konto.dvkontonummer'
vielen Dank. Grüsse Susanne |
Re: SQL-Abfrage mit inner Join - Syntaxfehler
bei
SQL-Code:
musst du dich für eins von beiden entscheiden :wink:
and where
|
Re: SQL-Abfrage mit inner Join - Syntaxfehler
jetzt habe ich das and weggelassen, aber die Fehlermeldung ist die gleiche. kann man das ganze statement auch ohne die ganzen inner join irgendwie formulieren, naja, das Ergebnisse sollte natürlich das gleiche bleiben :-) die inner join sind mir ein bisschen suspect.
|
Re: SQL-Abfrage mit inner Join - Syntaxfehler
Deine Inner Joins kannst du durch einen einfachen Verbund ersetzen:
SQL-Code:
Außerdem: In Access muss man imho doppelte Anführungszeichen benutzen. Edit: Nee, aber man kann :stupid:
select beleg.internebelegnummer, beleg.belegdatum, konto.kontonummer, konto.bezeichnung from beleg, buchung, konto where beleg.dvbelegnummer=buchung.dvbelegnummer and konto.dvkontonummer=buchung.dvkontonummer and konto.klasse = "K"
|
Re: SQL-Abfrage mit inner Join - Syntaxfehler
Du kannst das natürlich auch ohne INNER JOINs machen. Circa so:
SQL-Code:
Das macht genau das gleiche, wie ein INNER JOIN. Trotzdem finde ich die Schreibweise mit Inner Joins schöner - wenn man sich erst mal dran gewöhnt hat ;-)
SELECT
beleg.internebelegnummer, beleg.belegdatum, konto.kontonummer, konto.bezeichnung FROM beleg, buchung, konto WHERE beleg.dvbelegnummer=buchung.dvbelegnummer AND buchung.dvkontonummer = konto.dvkontonummer AND konto.klasse = 'K' Ich würde evtl. mal versuchen, das ganze zu Klammern. In etwa so:
SQL-Code:
Habe gerade kein Excel zur Hand, um das zu testen. Auf dem MS-SQL-Server gehen solche Joins auf jeden Fall auch ohne Klammerung.
SELECT
beleg.internebelegnummer, beleg.belegdatum, konto.kontonummer, konto.bezeichnung FROM (beleg INNER JOIN buchung ON beleg.dvbelegnummer=buchung.dvbelegnummer) INNER JOIN konto ON buchung.dvkontonummer = konto.dvkontonummer WHERE konto.klasse = 'K' Gruß, |
Re: SQL-Abfrage mit inner Join - Syntaxfehler
Zitat:
|
Re: SQL-Abfrage mit inner Join - Syntaxfehler
Die Jet-SQL Syntax kennt im Gegensatz zu Transact-SQL kein kaskadierendes INNER JOIN - deshalb sind die von Dominik erwähnten Klammern dort zwingend.
Grüße vom marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz