Veröffentlicht 13. Oktober 200321 j Ich habe da ein Problem mit einer Sql Anweisung auf einer MySql Datenbank! folgendes: ich habe folgende Tabellen: Tabelle ZusatzGerichte: mit den Spalten "ZNr"(primärschlüssel) und "Beschreibung" Tabelle Wunsch: mit den Spalten "ZNr" und "PatNr" und "Menge" jetzt bräuchte ich eine selectabfrage die mir ALLE Gerichte EINMAL zurückgibt, und falls Patient 1 (PatNr=1) das Gericht hat, soll auch gleich die Menge dabeistehn d.h. ich fräuchte folgende spalten als ergebnis. ZNr|Beschreibung|PatNr|Menge Habs bereits folendermaßen probiert SELECT ZusatzGerichte.ZNr, Beschreibung, PatNr, Menge FROM ZusatzGerichte LEFT OUTER JOIN PatientenWunsch ON PatientenWunsch.ZNr=ZusatzGerichte.ZNr ABER: falls mehrere verschiedene Patienten Gericht Nr 1 bestellt haben bekomme ich ZNr 1 öfter. mit WHERE (PatNr = 1 OR PatNr IS NULL) bekomme ich ZNr 3 z.b. nicht mehr wenn ein anderer Patient dieses Gericht bestellt hat Ich bräuchte aber alle Gerichte auf alle fälle, und dann halt noch die info ob Patient 1 das gericht hat, und wenn ja, welche menge... aber ich bekomms nicht hin.... Vielleciht kann mir einer von euch helfen?
13. Oktober 200321 j Original geschrieben von SwordMaster Habs bereits folendermaßen probiert SELECT ZusatzGerichte.ZNr, Beschreibung, PatNr, Menge FROM ZusatzGerichte LEFT OUTER JOIN PatientenWunsch ON PatientenWunsch.ZNr=ZusatzGerichte.ZNr Ich kapiere den Sinn hinter dem ganzen nicht so ganz, aber probier es mal so: SELECT ZusatzGerichte.ZNr, Beschreibung, PatNr, Menge FROM ZusatzGerichte LEFT OUTER JOIN PatientenWunsch ON (PatientenWunsch.ZNr=ZusatzGerichte.ZNr AND PatNr=1) damit müssten eigentlich die Daten vom Patientenwunsch (also Menge und PatNr) für die Gerichte von PatNr=1 angezeigt werden, für alle anderen sollte es leer bleiben.
13. Oktober 200321 j So sollte es gehen: SELECT ZusatzGerichte.ZNr, Beschreibung, PatNr, Menge FROM ZusatzGerichte LEFT OUTER JOIN PatientenWunsch ON PatientenWunsch.ZNr=ZusatzGerichte.ZNr AND PatNr = 1 so bekommst du alle Sätze aus der Tabelle ZusatzGerichte, aber nur die Mengen der Gerichte, die Patient 1 bestellt hat. Eine Where-Klausel geht über die schon zusammengejointe Menge an Datensätzen, mit weiteren Einschränkungen im Join selbst, kannst du aber weiter einschränken, welche Datensätze aus der zweiten Tabelle dazugejoint werden. edit: Huch, da war ich wohl einen Tick zu spät
13. Oktober 200321 j Autor perfekt, eingegeben und schon gehts genauso wie gewollt.... :uli :uli Thx SwordMaster
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.