Abfrage Left Join mit 2 Bedingungen ohne where

steffesj

Benutzer
Beiträge
6
Hallo Zusammen,
ich bin dabei in Access eine SQL Abfrage zu schreiben, in der ich 5 Tabellen mittels join verbinde.
Bei der letzten Tabelle müsste ich in der Left Join Methode in dem on zwei Bedingungen einfügen.
Geht dies überhaupt ohne where ?

Lg Jonas
 
Werbung:
Danke für die schnelle Antwort.
Ja so hatte ich es mir auch gedacht.
Nur leider habe ich bei dem w3school tutorial versucht, aber dort ging es nicht und auch nicht bei access.
Dies hatte mich gewundert.
Hier ist das Beispiel:
Ist das von der Syntax richtig.

LEFT JOIN Personal_Kostenträger_Zuweisung AS PKTZ ON ZKSKT.Kostenträger_Id = PKTZ.Kostenträger_Id and PKTZ.Personalnummer = PKSZ.Personalnummer;
 
ja die Spalten stimmen so und die Tabellennamen auch.
Access liefert folgende Fehlermeldung:
JOIN-Ausdruck nicht unterstützt.
Leider mehr Infos erhalte ich nicht.
Sobald ich das and und die zweite Bedingung weg lasse läuft es ohne Probleme.
 
Naja theoretisch kannst du die Bedingung PKTZ.Personalnummer = PKSZ.Personalnummer auch in den WHERE-Teil schreiben. Liefert dann das selbe Ergebnis, ist aber weniger elegant weil man ja eigentlich gar nicht erst joinen will. Die Performance sollte das nicht stark beeinflussen.
 
ja nur mein Problem ist, dass das gezeigte Join das letze von 6 ist und diese beiden Bedingungen dürfen sich nur auf das letzte Join beziehen und nicht auf das ganze Select.
Genau das ist das Problem, warum ich kein Where benutzen kann.
 
Was genau ist denn die Aufgabenstellung, handelt es sich um ein Produktiv-System oder um eine Übungsaufgabe?

Liegen die Daten in Access oder in MySQL vor? Wenn es sich um einen richtigen SQL Server handelt könnte man dort eine Sicht mit der passenden Abfrage erstellen und in Access nur noch einen Select auf die Sicht machen. Das müsste sogar MySQL können.
 
das soll mal ein Produktiv-System werden.
Die Daten soll auf MS Access selbst liegen.
Wie ich bereits gemerkt habe ist Access viel eingeschränkter als SQL Server.
 
In PG ginge:

Code:
test=# select (('a','b','c')=('a','b','c'));
 ?column?
----------
 t
(1 row)

'a', 'b' und 'c' durch entsprechende Spaltenausdrücke ersetzen. Durch die Klammern auf beiden Seiten des = ergibt das je eine 'Row', die man so vergleichen kann. Ob das in Acces oder oder so auch so geht weiß ich nicht.
 
Werbung:
Man kann es auch stumpf verketten und vergleichen, ist aber nicht sonderlich schön.
Code:
ON   cast(ZKSKT.Kostenträger_Id AS CHAR(20)) + cast(PKTZ.Personalnummer AS CHAR(20)) = cast(PKTZ.Kostenträger_Id AS CHAR(20)) + cast(PKSZ.Personalnummer AS CHAR(20))
 
Zurück
Oben