![]() |
Join mit drei Tabellen
Liste der Anhänge anzeigen (Anzahl: 1)
Habe folgenden Join in einer Query Komponente
SQL-Code:
Wo liegt mein Fehler ? Fehlermeldung im Anhang.
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
|
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) |
Re: Join mit drei Tabellen
Probier mal das:
Code:
bzw. statt " -> ', " -> ´, " -> ´, " -> []
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
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. |
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 |
Re: Join mit drei Tabellen
Liste der Anhänge anzeigen (Anzahl: 1)
Vorschlag 2
SQL-Code:
scheint hinzuhauen, nur faselt er jetzt was von Invalid Operator
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
|
Re: Join mit drei Tabellen
Zitat:
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. |
Re: Join mit drei Tabellen
So habe den Tabellennamen geändert. Aber der ist dennoch der gleiche geblieben.
SQL-Code:
Die Abfrage ist doch richtig oder nicht ? Kann beim besten willen keinen Fehler finden.
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 |
Re: Join mit drei Tabellen
So habe den Tabellennamen geändert. Aber der ist dennoch der gleiche geblieben.
SQL-Code:
Die Abfrage ist doch richtig oder nicht ? Kann beim besten willen keinen Fehler finden.
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 |
Re: Join mit drei Tabellen
Zitat:
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. :( |
Re: Join mit drei Tabellen
SQL-Code:
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.
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 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:23 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 by Thomas Breitkreuz