Switch to full style
Hier werden die SQL Grundlagen behandelt...
Antwort erstellen

Left Join mit Bedingung

Fr 31. Mai 2019, 11:32

Ich habe eine Fragestellung, die schnell erklärt ist, für die ich aber keine Lösung finden konnte:
1. Tabelle enthält eine Liste verfügbarer Artikel mit Primärschlüssel
2. Tabelle enthält eine Liste der Artikel/Nutzer Kombinationen.
3. Tabelle enthält eine Liste der Nutzerdaten mit Primärschlüssel und ist mit Tabelle 2 verbunden
Mit „left join“ erhalte ich eine Liste aller Artikel und der jeweiligen Nutzer, es gibt also Zeilen
ohne, mit einem oder mit mehreren Nutzern und natürlich entspricht die Zeilenzahl der Artikel-
zahl zuzüglich der Artikel mit mehreren Nutzern.
Jetzt das Problem:
Ich möchte nach dem Nutzer filtern ohne einen Artikel zu „verlieren“.
Bei zehn Artikeln, von denen drei an den betroffenen Nutzer und einer an zwei Nutzer gebunden
ist, erhalte ich folgende Ergebnisse:
Ohne Filter : 11 Zeilen (durch die zwei Nutzer)
Filter nach DEM Nutzer : 3 Zeilen, nur jene, die mit dem gewählten Nutzer verbunden sind
Filter zusätzlich nach leeren Zeilen : 9 Zeilen, aber nicht den doppelt verbundenen Artikel
Was ich benötige, dürfte klar sein, 10 Zeilen und darunter 3 mit DEM Nutzer.

Ich hoffe, das mir hier jemand den entscheidenden Tip geben kann.
Vielen Dank.

Re: Left Join mit Bedingung

Fr 31. Mai 2019, 11:57

Ich versuche mal, ein paar Daten zu meiner Frage zu präsentieren:
Dateianhänge
5BA64417-E29B-45D3-A7BA-87E05FBA78D1.jpeg
Etwas zur Visualisierung

Re: Left Join mit Bedingung

Sa 1. Jun 2019, 11:29

Dieser Code funktioniert leider nicht:

$Befehl = "select E.* from Einzelteile E
left join (select S.* from Sammlungen S inner join Sammler C on S.Sammler = C.IDSammler where C.Passwort = '$SammlerPasswort')
on S.Artikel = E.IDListe
where $Bedingung";

Re: Left Join mit Bedingung

Sa 22. Jun 2019, 14:50

Hallo Hartmut,

warum verwendest Du ein Subselect, wenn Du schon am Joinen bist?
Wenn Du Bedingungen in einem Left Join einbauen willst, dann musst Du ein AND in der ON-Klausel hinzufügen.

Gruß,
SQLUnion
Antwort erstellen