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
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

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

  Alt 5. Mär 2017, 08:55
Da name1 und name2 explizit "not null" sind habe ich sie nicht beachtet.
Wobei mir die Aufgabenstellung etwas wirr vorkommt.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

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

  Alt 5. Mär 2017, 09:52
Ja, deswegen habe ich die beiden Felder auch nicht gegen IS NULL geprüft.

Ich vermute es handelt sich um eine Key-Value "Implementierung".
Könnte sein, dass hier User spezifische Werte abgefragt werden sollen und falls nicht vorhanden, sollen default Werte zurückkommen.

Ohne weitere Infos vom TE wird das aber im Dunkeln bleiben.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

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

  Alt 5. Mär 2017, 11: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)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
BlueStarHH

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

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

  Alt 5. Mär 2017, 11: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.372 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 5. Mär 2017, 15: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.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
BlueStarHH

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

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

  Alt 5. Mär 2017, 09: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 10:00 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:06 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