Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Datenbankabfrage, mit Vergleich in der Rückgabe (https://www.delphipraxis.net/125262-datenbankabfrage-mit-vergleich-der-rueckgabe.html)

brechi 3. Dez 2008 09:34

Datenbank: MS SQL 2000 • Version: 2000 • Zugriff über: Ado

Datenbankabfrage, mit Vergleich in der Rückgabe
 
Ich will folgende Abfrage machen:

SQL-Code:
select Str.Name, str.Von = a From Strassen Str where
...
AND
((str.Von = a) OR (str.Bis = a))

Die Abfrage ist ein wenig komplizierter. Jedenfalls gibt es einen 'ODER' Teil mir sagt, ob es Von bzw. Bis Straße ist. Dies will ich in der Rückgabe einfach als Wahrheitswert haben.

Alternativ könnte ich:
2 Abfragen machen (Mehraufwand im Programm, DBS muss Tabelle 2x durchsuchen)
1 Abfrage mit Union (DBS muss Tabelle 2x durchsuchen)
1 Abfrage und Rückgabe von str.Von und a zum Vergleich im Programm (Mehraufwand im Programm, mehr Traffic)

Optimal:
1 Abfrage wie ich sie oben eigentlich machen wollte :/

Wie kann ich das Problem am besten lösen?

mkinzler 3. Dez 2008 09:49

Re: Datenbankabfrage, mit Vergleich in der Rückgabe
 
-iif()/if()
-case ... when

nahpets 3. Dez 2008 09:52

Re: Datenbankabfrage, mit Vergleich in der Rückgabe
 
Hallo,

habe Deine Frage nicht ganz verstanden, Du willst in den Spalten des Selects eine haben, aus der hervorgeht, ob nun
str.Von gleich a ist, oder ob str.Bis gleich a ist. Das solltest Du mit Case when hinbekommen.
Ungetestet in etwa sowas:
SQL-Code:
  CASE str.von
  WHEN a THEN 1
  ELSE
    CASE str.bis
      WHEN a THEN 2
      ELSE 0
    END
  END as WerIstA,
wenn Du nun WerIstA auf 1 abfragst, dann stimmt str.von mit a überein, wenn Du WerIstA auf 2 abfragst, dann stimmt str.bis mit a überein, 0 heißt keine Übereinstimmung.

tomsson74 3. Dez 2008 09:55

Re: Datenbankabfrage, mit Vergleich in der Rückgabe
 
Delphi-Quellcode:
SELECT Str.Name,
CASE
  WHEN a = Str.Von THEN 1
  ElSE 0
END as Von
FROM Strassen Str WHERE
...
AND
((str.Von = a) OR (str.Bis = a))
Als Ergebnis bekommst Du in Spalte 2 entweder eine '1! wenn die Strasse VON ist oder eine '0' wenn die Strasse BIS ist.

Edit: ROTER KASTEN, aber ich poste es trotzdem

Grüße
Thomas

brechi 3. Dez 2008 10:02

Re: Datenbankabfrage, mit Vergleich in der Rückgabe
 
Ja danke das wars :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:53 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