![]() |
Datenbank: Access • Version: 2010 • Zugriff über: Ado
INNER JOIN mit Access
Hallo,
ich versuche ein INNER JOIN über 3 Tabellen zu machen. Bekomme aber am laufenden Band fehler bei dieser Abfrage:
Delphi-Quellcode:
Vielen Dank für die Hilfe!
Form1.SQLQuery1.SQL.Add('SELECT Prüfling.*, Abteilung.*, Standort.*'+
' FROM Prüfling INNER JOIN Abteilung ON Prüfling."AbteilungID" = Abteilung."AbteilungID" INNER JOIN Standort'+ ' ON Abteilung."StandortID" = Standort."StandortID"'); |
AW: INNER JOIN mit Access
Und die Fehlermeldung dürfen wir erraten oder teilst Du sie uns noch mit? Ich würde jetzt mal auf den ersten Blick raten, dass es an dem Tabellennamen liegt.
|
AW: INNER JOIN mit Access
Ist jetzt schon was länger her bei mir, aber war das nicht bei Access immmer alles in eckigen Klamern [MeinFeld]?
|
AW: INNER JOIN mit Access
Umlaute im Tabellennamen?
|
AW: INNER JOIN mit Access
Sorry, die Fehlermeldung habe ich ja ganz vergessen. :oops:
Zitat:
|
AW: INNER JOIN mit Access
SQL-Code:
SELECT
p.*, a.*, s.* FROM Pruefling p INNER JOIN Abteilung a ON a."AbteilungID" = p."AbteilungID" INNER JOIN Standort s ON s."StandortID" = p."StandortID"; |
AW: INNER JOIN mit Access
Zitat:
Ungültige Verwendung von '.', '!' oder '()'. in Abfrageausdruck 'a."AbteilungID" = p."AbteilungID"'+ ' INNER JOIN Standort s ON s."StandortID" = p."StandortID"' |
AW: INNER JOIN mit Access
Lass mnal den 2. Join weg. Es scheint so, al ob Access damit Probleme hat
|
AW: INNER JOIN mit Access
Ja dann simulier den INNER JOIN durch OUTER JOIN und WHERE.
|
AW: INNER JOIN mit Access
Zitat:
|
AW: INNER JOIN mit Access
Dann mach doch zum Testen erst einmal nur einen Join. BTW: Wozu sind eigentlich die Anführungszeichen? Sind die Pflicht bei Access?
|
AW: INNER JOIN mit Access
Lass mal die Gänsefüßchen weg. Hab mal gerade einen Mini-DB gebaut und das getestet:
SQL-Code:
SELECT Feld.*, Test.*
FROM Feld INNER JOIN Test ON Feld.FeldID = Test.FeldID; |
AW: INNER JOIN mit Access
Es Funktioniert. Hier hat irgendjemand von Prüfungen das ü durch ein ue ersetzt und ich habe es rauskopiert. Das hab ich wieder vor lauter Bäumen den Wald nicht gesehen.
|
AW: INNER JOIN mit Access
Zitat:
Gruß K-H |
AW: INNER JOIN mit Access
Zitat:
Es geht nur mit 2 Tabellen. Mit 3 Tabellen bekomme ich es nicht hin. |
AW: INNER JOIN mit Access
Wie sieht die Abfrage denn jetzt aus? Stimmen die Tabellen- und Feldbezeichner? Welche Fehler werden gemeldet?
|
AW: INNER JOIN mit Access
Aktuelle Abfrage:
Delphi-Quellcode:
Form2.ADOQuery1.SQL.Add('SELECT p.*, a.*, s.* FROM Prüfling p (INNER JOIN Abteilung a ON a.AbteilungID = p.AbteilungID)'+
' (INNER JOIN Standort s ON s.StandortID = p.StandortID)'); Fehler: Im Projekt ... ist eine Exception der Klasse EOleException mit der Meldung 'Syntaxfehler in FROM-Klausel' aufgetreten. |
AW: INNER JOIN mit Access
Und die Klammern müssen sein? Was ist, wenn Du nur SELECT * abfragst, das dürfte ja im Ergebnis dasselbe sein? An diese Access-Syntax werde ich mich nie gewöhnen.
|
AW: INNER JOIN mit Access
Code:
FROM (Prüfling INNER JOIN Abteilung ON Prüfling.AbteilungID = Abteilung.AbteilungID) INNER JOIN Standort ON Prüfling.StandortID = Standort.StandortID;
|
AW: INNER JOIN mit Access
Zitat:
Zitat:
Delphi-Quellcode:
Form2.ADOQuery1.SQL.Clear; Form2.ADOQuery1.SQL.Add('SELECT Prüfling, Abteilung, Standort FROM (Prüfling INNER JOIN Abteilung ON Prüfling.AbteilungID = Abteilung.AbteilungID)INNER JOIN Standort ON Prüfling.StandortID = Standort.StandortID'); Form2.ADOQuery1.Open; |
AW: INNER JOIN mit Access
SQL-Code:
Du willst ja wohl Felder abfragen und keine Tabellen, oder?
SELECT
Tabelle1, Tabelle2, Tabelle3 ... [edit] Wie ist es denn mit der "alten" Syntax, geht das?
SQL-Code:
[/edit]
SELECT
* FROM Prüfling, Abteilung, Standort WHERE Prüfling.AbteilungID = Abteilung.AbteilungID AND Prüfling.StandortID = Standort.StandortID |
AW: INNER JOIN mit Access
Zitat:
Ich möchte von allen 3 Tabellen alle Spalten Abfragen.
Delphi-Quellcode:
Ist das so richtig?
Form2.ADOQuery1.SQL.Add('SELECT Prüfling.*, Abteilung.*, Standort.* FROM (Prüfling INNER JOIN Abteilung ON Prüfling.AbteilungID = Abteilung.AbteilungID)INNER JOIN Standort ON Prüfling.StandortID = Standort.StandortID');
Delphi-Quellcode:
Oder doch lieber so?
Form2.ADOQuery1.SQL.Add('SELECT * FROM (Prüfling INNER JOIN Abteilung ON Prüfling.AbteilungID = Abteilung.AbteilungID)INNER JOIN Standort ON Prüfling.StandortID = Standort.StandortID');
|
AW: INNER JOIN mit Access
Hast Du mein Edit gesehen und ausprobiert? Bei einem INNER JOIN sollte das eigentlich unproblematisch sein.
|
AW: INNER JOIN mit Access
Jop, alles ausprobiert. Der Fehler kommt immernoch, ich tippe so langsam darauf, dass es an der Open funktion liegt. Weil ich in der Delphi Hilfe kein Open gefunden habe für die tadoquery Komponente.
|
AW: INNER JOIN mit Access
Open gibt es aber, da musst Du Dir keinen Kopf machen. Was mich etwas stört, sind die Umlaute bei "Prüfling". Ich weiß nicht, ob das nicht evtl. Probleme verursachen könnte.
|
AW: INNER JOIN mit Access
Hallo,
wenn Du die Abfrag benutzt, die Du gepostet hast, dann fehlt dort ein Leerzeichen vor dem 2. INNER JOIN. Am Open liegt es sicher nicht. Um alle Felder aus allen Tabellen anzuzeigen musst du diesen Teile nehmen:
Delphi-Quellcode:
Access ist die einzige DB, die ich kenne, bei der die JOIN-Parameter geklammert werden müssen. Die Klammerung beim o.g. Beispiel stimmt soweit.
ADOQuery1.Close();
ADOQuery.SQL.Text:= 'SELECT Prüfling.*, Abteilung.*, Standort.* FROM (Prüfling INNER JOIN Abteilung ON Prüfling.AbteilungID = Abteilung.AbteilungID) INNER JOIN Standort ON Prüfling.StandortID = Standort.StandortID'; ADOQuery.Open(); Umlaute sind in Access auch kein Problem. Sowohl in Tabellen- wie auch in Feldnamen. |
AW: INNER JOIN mit Access
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:21 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