Danke an alle. Die leicht abgewandelte Lösung aus Beitrag #4 von TBx leifert genau mein gewünschtes Ergebnis:
Code:
SELECT a.*
FROM WERTE a
WHERE (a.USERID = 1)
OR ((a.USERID = 0) AND (NOT EXISTS (SELECT name2 FROM WERTE b WHERE b.USERID = 1 AND b.name1 = a.name1 and b.name2 = a.name2)))
Um die Aufgabe nochmal klarer zu machen. Hier ein Beispiel:
Gegeben ist:
Code:
Name1 Name2 UserID Wert
Gehalt Bonus 0 200
Gehalt Bonus 1 300
KFZ Tankkarte 0 50
KFZ Tankkarte 7 120
KFZ Waschkarte 1 15
Haben möchte ich alles für User 1 und wenn es keinen User 1 gibt, dafür die Einträge mit User 0:
Code:
Name1 Name2 UserID Wert
Gehalt Bonus 1 300
KFZ Tankkarte 0 50
KFZ Waschkarte 1 15
Die Zeile mit einer UserID 0 ist sozusagen der Default-Eintrag, wenn es zu einem User (z.B. 1) keinen Eintrag gibt.
PS: Diese "schwachsinnige" Tabellenstruktur (eine große Tabelle, wo alles reingeworfen ist) stammt nicht von mir. Ich darf sie nur benutzen...