Laden...

Select...left Join

Erstellt von Maximus vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.453 Views
M
Maximus Themenstarter:in
97 Beiträge seit 2006
vor 16 Jahren
Select...left Join

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.

A
138 Beiträge seit 2007
vor 16 Jahren

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?

M
Maximus Themenstarter:in
97 Beiträge seit 2006
vor 16 Jahren

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.