Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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?

Geschrieben
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.

Geschrieben

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 ;)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...