Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Join mit drei Tabellen (https://www.delphipraxis.net/25417-join-mit-drei-tabellen.html)

LogoPie 6. Jul 2004 09:00


Join mit drei Tabellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Habe folgenden Join in einer Query Komponente


SQL-Code:
SELECT ToDo-Liste.ToDoNr,Interessenten.Firma,Mitarbeiter.Anrede,Mitarbeiter.Name FROM ( ToDo-Liste LEFT JOIN Interessenten ON ToDo-Liste.IntNr = Interessenten.IntNr ) LEFT JOIN Mitarbeiter ON ToDo-Liste.MitarbeiterNr = Mitarbeiter.MitarbeiterNr
Wo liegt mein Fehler ? Fehlermeldung im Anhang.

Stevie 6. Jul 2004 09:09

Re: Join mit drei Tabellen
 
Was für ne Datenbank?
Versuch's mal so:
SQL-Code:
SELECT
  ToDo-Liste.ToDoNr,
  Interessenten.Firma,
  Mitarbeiter.Anrede,
  Mitarbeiter.Name
FROM ToDo-Liste LEFT JOIN Interessenten USING (IntNr)
  LEFT JOIN Mitarbeiter USING (MitarbeiterNr)

Bernhard Geyer 6. Jul 2004 09:11

Re: Join mit drei Tabellen
 
Probier mal das:
Code:
SELECT "ToDo-Liste".ToDoNr,Interessenten.Firma,Mitarbeiter.Anrede,Mitarbeiter.Name FROM ( "ToDo-Liste" LEFT JOIN Interessenten ON "ToDo-Liste".IntNr = Interessenten.IntNr ) LEFT JOIN Mitarbeiter ON "ToDo-Liste".MitarbeiterNr = Mitarbeiter.MitarbeiterNr
bzw. statt " -> ', " -> ´, " -> ´, " -> []

Generell ist es schlecht einen Bindestrich als Bestandteil eines Tabellen/Feldnamens zu verwenden, da beim Parsern des SQL-Statesments diese Bezeichner "geklammert" werden müssen, damit der SQL-Parser diesen Bindestrich nicht als Operator (Feld1 - Feld2) betrachtet.

LogoPie 6. Jul 2004 09:28

Re: Join mit drei Tabellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich Benutze den Advantage Database Server, steht aber auch in meiner Signatur.

Der erste Vorschlag funktioniert ebenfals nicht. Vielleicht liegt an der Anweisung USING.
Ich weiß nicht ob ADS damit zurecht kommt.Folgende Fehlermeldung

LogoPie 6. Jul 2004 09:33

Re: Join mit drei Tabellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Vorschlag 2
SQL-Code:
SELECT "ToDo-Liste".ToDoNr,Interessenten.Firma,Mitarbeiter.Anrede,Mitarbeiter.Name FROM ( "ToDo-Liste" LEFT JOIN Interessenten ON "ToDo-Liste".IntNr = Interessenten.IntNr ) LEFT JOIN Mitarbeiter ON "ToDo-Liste".MitarbeiterNr = Mitarbeiter.MitarbeiterNr
scheint hinzuhauen, nur faselt er jetzt was von Invalid Operator

shmia 6. Jul 2004 09:42

Re: Join mit drei Tabellen
 
Zitat:

Zitat von LogoPie
Habe folgenden Join in einer Query Komponente
SQL-Code:
SELECT ToDo-Liste.ToDoNr .......
Wo liegt mein Fehler ? Fehlermeldung im Anhang.

Du hast ein Minus-Zeichen in einem Tabellennamen verwendet!!
Das solltest du gleich ändern, da sonst der SQL-Parser ausgetrickst wird.
Man kann den Tabellennamen auch in doppelte Anführungszeichen setzen; ich würde dennoch
den Tabellennamen ändern, weil du sonst immer Stress hast.

LogoPie 6. Jul 2004 10:04

Re: Join mit drei Tabellen
 
So habe den Tabellennamen geändert. Aber der ist dennoch der gleiche geblieben.
SQL-Code:
SELECT ToDoListe.ToDoNr,Interessenten.Firma,Mitarbeiter.Anrede,Mitarbeiter.Name
FROM ( ToDoListe LEFT JOIN Interessenten ON ToDoListe.IntNr = Interessenten.IntNr )
LEFT JOIN Mitarbeiter ON ToDoListe.MitarbeiterNr = Mitarbeiter.MitarbeiterNr
Die Abfrage ist doch richtig oder nicht ? Kann beim besten willen keinen Fehler finden.

LogoPie 6. Jul 2004 10:14

Re: Join mit drei Tabellen
 
So habe den Tabellennamen geändert. Aber der ist dennoch der gleiche geblieben.
SQL-Code:
SELECT ToDoListe.ToDoNr,Interessenten.Firma,Mitarbeiter.Anrede,Mitarbeiter.Name
FROM ( ToDoListe LEFT JOIN Interessenten ON ToDoListe.IntNr = Interessenten.IntNr )
LEFT JOIN Mitarbeiter ON ToDoListe.MitarbeiterNr = Mitarbeiter.MitarbeiterNr
Die Abfrage ist doch richtig oder nicht ? Kann beim besten willen keinen Fehler finden.

shmia 6. Jul 2004 10:15

Re: Join mit drei Tabellen
 
Zitat:

Zitat von LogoPie
Die Abfrage ist doch richtig oder nicht ? Kann beim besten willen keinen Fehler finden.

Ja, es ist eine fehlerfreie SQL-92 Abfrage. Aber lass mal die runden Klammern weg; möglicherweise
ist ADS an dieser Stelle nicht auf Klammern vorbereitet.
Ein "schlaues" DBMS entscheidet selber welchen Join er zuerst durchführt. Eine "dumme" Datenbank
wie z.B. M$ Access (Jet Engine 4) beschwert sich, wenn die Klammern fehlen. :(

LogoPie 6. Jul 2004 10:24

Re: Join mit drei Tabellen
 
SQL-Code:
SELECT ToDoListe.ToDoNr,Interessenten.Firma,Mitarbeiter.Anrede,Mitarbeiter.Name
FROM ToDoListe LEFT JOIN Interessenten ON ToDoListe.IntNr = Interessenten.IntNr
LEFT JOIN Mitarbeiter ON ToDoListe.MitarbeiterNr = Mitarbeiter.MitarbeiterNr
So die Klammern sind nun weg, aber der Fehler "Invalid operand for operator =" ist immer noch der gleiche. Hab echt keine Idee woran es noch liegen könnte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:23 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz