![]() |
AW: SQL-Ausdruck gibt zu wenige DS zurück
Danke an alle. Die leicht abgewandelte Lösung aus Beitrag #4 von TBx leifert genau mein gewünschtes Ergebnis:
Code:
Um die Aufgabe nochmal klarer zu machen. Hier ein Beispiel:
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))) Gegeben ist:
Code:
Haben möchte ich alles für User 1 und wenn es keinen User 1 gibt, dafür die Einträge mit User 0:
Name1 Name2 UserID Wert
Gehalt Bonus 0 200 Gehalt Bonus 1 300 KFZ Tankkarte 0 50 KFZ Tankkarte 7 120 KFZ Waschkarte 1 15
Code:
Die Zeile mit einer UserID 0 ist sozusagen der Default-Eintrag, wenn es zu einem User (z.B. 1) keinen Eintrag gibt.
Name1 Name2 UserID Wert
Gehalt Bonus 1 300 KFZ Tankkarte 0 50 KFZ Waschkarte 1 15 PS: Diese "schwachsinnige" Tabellenstruktur (eine große Tabelle, wo alles reingeworfen ist) stammt nicht von mir. Ich darf sie nur benutzen... |
AW: SQL-Ausdruck gibt zu wenige DS zurück
Wenn Name1 und Name2 der Username/Vor-&Nachname wäre, dann wäre das Ganze sehr suspekt.
SQL-Code:
SELECT tabelle.*
FROM tabelle LEFT JOIN tabelle AS test ON test.userid = 1 AND test.name1 = tabelle.name1 AND test.name2 = tabelle.name2 WHERE tabelle.userid = 1 OR (tabelle.userid = 0 AND test.userid IS NULL) |
AW: SQL-Ausdruck gibt zu wenige DS zurück
Zitat:
|
AW: SQL-Ausdruck gibt zu wenige DS zurück
Diesen Post garnicht gesehn :oops:
Dann sind die Bezeichner schon ein bisschen unglücklich gewählt. Und die Werte sind hoffentlich nicht immer nur Zahlen. :angle: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz