AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL-Abfrage mit inner Join - Syntaxfehler
Thema durchsuchen
Ansicht
Themen-Optionen

SQL-Abfrage mit inner Join - Syntaxfehler

Ein Thema von Susanne · begonnen am 31. Jan 2006 · letzter Beitrag vom 31. Jan 2006
Antwort Antwort
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#1

SQL-Abfrage mit inner Join - Syntaxfehler

  Alt 31. Jan 2006, 10:33
Datenbank: MS Access • Version: 2003 • Zugriff über: ADO
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.


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' Fehlermeldung:
Synataxfehler (fehlender Operator) 'beleg.dvbelegnummer=buchung.dvbelegnummer inner join konto on buchung.dvkontonummer = konto.dvkontonummer' Kann mir vielleicht bei der Gelegenheit nochmal einer das mit dem inner join erklären, das ist mir nicht wirklich klar.

vielen Dank.

Grüsse
Susanne
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#2

Re: SQL-Abfrage mit inner Join - Syntaxfehler

  Alt 31. Jan 2006, 10:41
bei
and where musst du dich für eins von beiden entscheiden
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
Susanne

Registriert seit: 21. Mai 2004
Ort: Lage
232 Beiträge
 
Delphi 2005 Professional
 
#3

Re: SQL-Abfrage mit inner Join - Syntaxfehler

  Alt 31. Jan 2006, 10:46
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.
Susanne
  Mit Zitat antworten Zitat
Benutzerbild von tomsel
tomsel

Registriert seit: 8. Dez 2005
Ort: am Chiemsee
304 Beiträge
 
Delphi 7 Professional
 
#4

Re: SQL-Abfrage mit inner Join - Syntaxfehler

  Alt 31. Jan 2006, 11:06
Deine Inner Joins kannst du durch einen einfachen Verbund ersetzen:

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" Außerdem: In Access muss man imho doppelte Anführungszeichen benutzen. Edit: Nee, aber man kann
Ein Experte ist ein Mann, der hinterher genau sagen kann, warum seine Prognose nicht gestimmt hat. (Winston Churchill)
  Mit Zitat antworten Zitat
sir-archimedes

Registriert seit: 2. Jan 2006
Ort: Münster
167 Beiträge
 
Delphi 2006 Professional
 
#5

Re: SQL-Abfrage mit inner Join - Syntaxfehler

  Alt 31. Jan 2006, 11:10
Du kannst das natürlich auch ohne INNER JOINs machen. Circa so:

SQL-Code:
  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'
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

Ich würde evtl. mal versuchen, das ganze zu Klammern. In etwa so:

SQL-Code:
  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'
Habe gerade kein Excel zur Hand, um das zu testen. Auf dem MS-SQL-Server gehen solche Joins auf jeden Fall auch ohne Klammerung.

Gruß,
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: SQL-Abfrage mit inner Join - Syntaxfehler

  Alt 31. Jan 2006, 11:19
Zitat von dominik.boehm:
Das macht genau das gleiche, wie ein INNER JOIN. Trotzdem finde ich die Schreibweise mit Inner Joins schöner...
Mit 'schöner' (obwohl es stimmt) hat das aber Nichts zu tun. Microsoft behält sich vor, die alte Schreibweise irgendwann nicht mehr zu supporten. Weiterhin gibt es Konstrukte, die lassen sich nunmal nur über die JOIN-Schreibweise realisieren. Insofern ist es auf jeden Fall zu empfehlen, ausschließlich mit JOINs zu arbeiten, dann hat man einfach weniger Probleme.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#7

Re: SQL-Abfrage mit inner Join - Syntaxfehler

  Alt 31. Jan 2006, 11:33
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz