AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Datenbankabfrage, mit Vergleich in der Rückgabe
Thema durchsuchen
Ansicht
Themen-Optionen

Datenbankabfrage, mit Vergleich in der Rückgabe

Ein Thema von brechi · begonnen am 3. Dez 2008 · letzter Beitrag vom 3. Dez 2008
Antwort Antwort
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#1

Datenbankabfrage, mit Vergleich in der Rückgabe

  Alt 3. Dez 2008, 10:34
Datenbank: MS SQL 2000 • Version: 2000 • Zugriff über: Ado
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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Datenbankabfrage, mit Vergleich in der Rückgabe

  Alt 3. Dez 2008, 10:49
-iif()/if()
-case ... when
Markus Kinzler
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#3

Re: Datenbankabfrage, mit Vergleich in der Rückgabe

  Alt 3. Dez 2008, 10:52
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.
  Mit Zitat antworten Zitat
tomsson74

Registriert seit: 8. Jan 2008
73 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Datenbankabfrage, mit Vergleich in der Rückgabe

  Alt 3. Dez 2008, 10:55
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
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#5

Re: Datenbankabfrage, mit Vergleich in der Rückgabe

  Alt 3. Dez 2008, 11:02
Ja danke das wars
  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 03:09 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