Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   SQL-Ausdruck gibt zu wenige DS zurück (https://www.delphipraxis.net/191929-sql-ausdruck-gibt-zu-wenige-ds-zurueck.html)

BlueStarHH 5. Mär 2017 09:54

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

himitsu 5. Mär 2017 11:30

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)

BlueStarHH 5. Mär 2017 11:47

AW: SQL-Ausdruck gibt zu wenige DS zurück
 
Zitat:

Zitat von himitsu (Beitrag 1363225)
Wenn Name1 und Name2 der Username/Vor-&Nachname wäre, dann wäre das Ganze sehr suspekt.

Name1 und Name2 sind nicht der Username/Vor-&Nachname. Guck Dir nochmal mein Post direkt vor Deinem an. Da gibt es Beispieldaten...

himitsu 5. Mär 2017 15:12

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 04:33 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz