Hallo ich versuche mittels MSSQL den folgenden SQL-Befehl:
SELECT tab_a.spiel_id, tab_b.spiel_id, tab_b.spieler_id
FROM tab_a
LEFT OUTER JOIN tab_b ON tab_a.spiel_id = tab_b.spiel_id
Ein mögliches Ergebnis sieht wie folgt aus:
tab_a.spiel_id, tab_b.spieler_id
1, null
2, null
3, Hans
4, Hans
4, Willi
Wie muss mein SELECT aussehen, damit er mir ALLE Datensätze der Tabelle tab_a anzeigt, jedoch von tab_b nur die wo spieler_id NULL oder Hans ist?
Also 4, Willi darf nicht angezeigt werden?
Hoffe ich habe mich verständlich ausgedrückt.
Danke für Eure Hilfe.
Gruß
Maximus!!!
Die Schnecke kann Dir mehr über den Weg erzählen als der Hase.
Hallo,
du musst am Ende einfach eine WHERE-Bedingung anhängen, die deine Datensätze entsprechend entschränkt, also wo tab_b.spieler_id null oder Hans ist, sofern ich dich richtig verstanden habe.
PS: Warum steht unter spieler_id ein Name, wäre eine Zahl als ID nicht sinvoller?
Tja, das dachte ich auch.
Leider stoße ich dabei auf folgendes Problem:
Habe den SELECT etwas sinnvoller gestaltet:
SELECT euro2008_tips.spieler_id, euro2008_tips.tip_id, euro2008_tips.spiel_id, euro2008_spiele.spiel_id AS Expr1
FROM euro2008_tips RIGHT OUTER JOIN euro2008_spiele ON euro2008_tips.spiel_id = euro2008_spiele.spiel_id
WHERE (euro2008_tips.spieler_id LIKE @spieler_id) OR (euro2008_tips.spieler_id IS NULL
.
Wie beschrieben soll IMMER alle Einträge der Tabelle euro2008_spiele angezeigt werden.
Problem: In der Tabelle euro2008_spiele sind zur Zeit 6 Einträge.
In der Tabelle euro2008_tips gibt es 3 Einträge: 2 mit spieler_id="Willi" und 1 mit spieler_id="Hans".
Wenn ich in obigen Select nun den @spieler_id Parameter auf "Willi" setze, werden 6 Ergebnisse geliefert; setze ich den Parameter auf "Hans" sind es nur 5.
Es fehlt dann die Zeile für die Willi den 2. Eintrag hat.
Wie kann ich das Problem lösen?
Danke für Deine Hilfe.
Gruß
Maximus.
Die Schnecke kann Dir mehr über den Weg erzählen als der Hase.