AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken SQL-Ausdruck gibt zu wenige DS zurück
Thema durchsuchen
Ansicht
Themen-Optionen

SQL-Ausdruck gibt zu wenige DS zurück

Ein Thema von BlueStarHH · begonnen am 4. Mär 2017 · letzter Beitrag vom 5. Mär 2017
Antwort Antwort
Seite 2 von 2     12   
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
849 Beiträge
 
Delphi 11 Alexandria
 
#11

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

  Alt 5. Mär 2017, 10:54
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...

Geändert von BlueStarHH ( 5. Mär 2017 um 11:00 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
 
Delphi 12 Athens
 
#12

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

  Alt 5. Mär 2017, 12:30
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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
BlueStarHH

Registriert seit: 28. Mär 2005
Ort: Hamburg
849 Beiträge
 
Delphi 11 Alexandria
 
#13

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

  Alt 5. Mär 2017, 12:47
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...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.080 Beiträge
 
Delphi 12 Athens
 
#14

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

  Alt 5. Mär 2017, 16:12
Diesen Post garnicht gesehn

Dann sind die Bezeichner schon ein bisschen unglücklich gewählt.
Und die Werte sind hoffentlich nicht immer nur Zahlen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:57 Uhr.
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