Benutzer mit den meisten Antworten
2 inner Join in einer SQL Abfrage - fehlender Operator

Frage
-
Hallo,
ich beiße mir schon seit Tagen die Zunge an einer Abfrage aus. Hierbei sollen Daten aus 3 Tabellen zusammengeführt werden und ich habe es mit einem doppelten LEFT JOIN versucht. Bekomme aber immer den Fehler, dass ein Operator fehlt.
Hier der Code:
sql = "
INSERT INTO [T-Ressourcen-Projektansicht] ( Ressource, [Kriterium-sonst], [Maschinen-Nr], Type, Typ, Anfang, Ende, AdressenNummer)
SELECT DISTINCTROW " & QuelleName & ", " & QuelleKriterium & ", [T-Maschinen].[Maschinen-Nr], [T-Maschinen].[Typ], '" & Typ & "', [T-Maschinen].[Lieferzeit-Eingang], [T-Projekte].[EK-Datum-Verladung], [T-Adressen].[Adressen-Nr]
FROM
[T-Projekte]
LEFT JOIN " & QuellTabelle & " ON [T-Projekte].[EK " & Feldbezeichnung & "] = [T-Adressen].[Adressen-Nr]
LEFT JOIN [T-Maschinen] ON [T-Projekte].[Maschinen-Nr] = [T-Maschinen].[Maschinen-Nr]
WHERE ((" & QuelleKriterium & ")>4005 And (" & QuelleKriterium & ")<4009) OR ((" & QuelleKriterium & ")>4100 And (" & QuelleKriterium & ")<4351)) AND (([T-Projekte].[EK-Datum-Verladung])>=[Forms]![F-Projekt-Ressourcen]![AktuellesDatum]-35 And ([T-Projekte].[EK-Datum-Verladung])<=[Forms]![F-Projekt-Ressourcen]![AktuellesDatum]+65));"Für Tips und Anregungen, wäre ich sehr dankbar!
Antworten
-
Hallo,
der SQL Syntax nach verwendest Du MS Access als Datenbank, richtig? MS Access will unbedingt die JOINs, wenn mehrere vorhanden sind, in Klammern gesetzt haben. Versuche es mal so:
FROM
([T-Projekte] LEFT JOIN [T-Adressen] ON [T-Projekte].[EK Monteur 1] = [T-Adressen].[Adressen-Nr] ) LEFT JOIN [T-Maschinen] ON [T-Projekte].[Maschinen-Nr] = [T-Maschinen].[Maschinen-Nr]
und das am besten direkt in MS Access als Abfrage zum Testen
Olaf Helper
[ Blog] [ Xing] [ MVP]- Bearbeitet Olaf HelperMVP Dienstag, 17. Juni 2014 07:22
- Als Antwort markiert Livcasson Dienstag, 17. Juni 2014 08:07
Alle Antworten
-
Hi,
poste bitte mal den Inhalt der Variable "sql" nach Ausführung der o.g. Zeile.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hi,
mit den Variablen sieht der Code so aus:
sql = "
INSERT INTO [T-Ressourcen-Projektansicht] ( Ressource, [Kriterium-sonst], [Maschinen-Nr], Type, Typ, Anfang, Ende, AdressenNummer)
SELECT DISTINCTROW [T-Adressen].Kurzname, [T-Adressen].KriteriumSonstige, [T-Maschinen].[Maschinen-Nr], [T-Maschinen].[Typ], 'Demontage', [T-Maschinen].[Lieferzeit-Eingang], [T-Projekte].[EK-Datum-Verladung], [T-Adressen].[Adressen-Nr]
FROM [T-Projekte]
LEFT JOIN [T-Adressen] ON [T-Projekte].[EK Monteur 1] = [T-Adressen].[Adressen-Nr]
LEFT JOIN [T-Maschinen] ON [T-Projekte].[Maschinen-Nr] = [T-Maschinen].[Maschinen-Nr]
WHERE (([T-Adressen].KriteriumSonstige)>4005 And ([T-Adressen].KriteriumSonstige)<4009) OR (([T-Adressen].KriteriumSonstige)>4100 And ([T-Adressen].KriteriumSonstige)<4351)) AND (([T-Projekte].[EK-Datum-Verladung])>=[Forms]![F-Projekt-Ressourcen]![AktuellesDatum]-35 And ([T-Projekte].[EK-Datum-Verladung])<=[Forms]![F-Projekt-Ressourcen]![AktuellesDatum]+65));"
-
Hallo,
der SQL Syntax nach verwendest Du MS Access als Datenbank, richtig? MS Access will unbedingt die JOINs, wenn mehrere vorhanden sind, in Klammern gesetzt haben. Versuche es mal so:
FROM
([T-Projekte] LEFT JOIN [T-Adressen] ON [T-Projekte].[EK Monteur 1] = [T-Adressen].[Adressen-Nr] ) LEFT JOIN [T-Maschinen] ON [T-Projekte].[Maschinen-Nr] = [T-Maschinen].[Maschinen-Nr]
und das am besten direkt in MS Access als Abfrage zum Testen
Olaf Helper
[ Blog] [ Xing] [ MVP]- Bearbeitet Olaf HelperMVP Dienstag, 17. Juni 2014 07:22
- Als Antwort markiert Livcasson Dienstag, 17. Juni 2014 08:07
-
Am besten "klickst" Du in MS Access im Designer die Abfrage zusammen, dann hast Du die richtige Syntax.
Wenn es mehr als nur 2 JOINs sind, muss "von oben nach unten" geschachtelt geklammert werden, das sieht von der Struktur her so aus:
FROM (((tbl1 JOIN tbl2 ON ...) JOIN tbl3 ON ...) JOIN tbl4 ON ...) JOIN tbl5 ON ...
Olaf Helper
[ Blog] [ Xing] [ MVP]