AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SQL Abfrage

Ein Thema von motu · begonnen am 30. Jul 2004 · letzter Beitrag vom 3. Aug 2004
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von motu
motu

Registriert seit: 20. Jul 2004
76 Beiträge
 
Delphi 6 Professional
 
#1

SQL Abfrage

  Alt 30. Jul 2004, 12:56
Hallo,

ich möchte gern in einer Datenbank nach einem Wert suchen lassen, ist
er vorhanden, soll der Datensatz als auch der dem Wert entsprechende
vorhergehende als der Nachfolger angezeigt werden. Wenn der Wert
nicht gefunden wird, sollen aber auch Vorgänger und Nachfolger
angezeigt werden.
Zur Verfügung hab ich MSSQL und DelphiADO

Zur Erklärung: Meine DB sieht etwas so aus:

ID Wert
1 10
2 20
3 30
4 50
5 40
6 60

Ich kann also nicht einfach sagen: "Suche Wert, nimm DS mit ID+/-1"
Ich muß quasi erstmal meine Daten sortieren, dann suchen und dann das
Umfeld ausgeben lassen. Nur wie?
Es gibt nur eine dumme Frage: Ist Impotenz vererbbar?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: SQL Abfrage

  Alt 30. Jul 2004, 13:11
Zitat von motu:
...Ich kann also nicht einfach sagen: "Suche Wert, nimm DS mit ID+/-1"
Wieso nicht ?

SELECT * FROM BLA WHERE ID BETWEEN (:ID-1 AND ID+1); Syntax ohne Gewähr. "Between" auch.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von motu
motu

Registriert seit: 20. Jul 2004
76 Beiträge
 
Delphi 6 Professional
 
#3

Re: SQL Abfrage

  Alt 2. Aug 2004, 08:04
Zitat von "Hansa:
Wieso nicht ?
Na weil, die Steigung der Werte nicht mit der Steigung der ID zusammenhängt. Wenn neue Werte in die DB eingetragen werden, bekommen die 'ne neue ID egal ob die Ende ans Ende, an den Anfang oder ind die Mitte gehören. Hinzu kommt, das ich dann immer einen Wert finden muß, der aber nicht immer vorhanden ist.

Macht aber nichts, soweit war ich vor ein paar Wochen schon. Da find ich schon eine andere Lösung, so wie damals.
Es gibt nur eine dumme Frage: Ist Impotenz vererbbar?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: SQL Abfrage

  Alt 2. Aug 2004, 08:12
naja, deine sql abfrage müsste dann einfach alles abfragen und sortiert zurück geben
select * from YOURTABLE order by ID ASC mit TQuery.First, TQuery.Next etc. kannst du dann die ergebnisse durchgehen und nach deinem wert suchen. Wenn du diesen gefunden hast kannst du mit TQuery.Next den nachfolgenden Wert ermitteln und mit TQuery.Prior den davor liegenden Wert. Ob TQuery in Zusammenhang mit Ado geht weiß i leider nicht aber da wirds mindestens ähnliche Wege geben.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von motu
motu

Registriert seit: 20. Jul 2004
76 Beiträge
 
Delphi 6 Professional
 
#5

Re: SQL Abfrage

  Alt 2. Aug 2004, 08:20
Zitat von SirThornberry:
mit TQuery.First, TQuery.Next etc. kannst du dann die ergebnisse durchgehen und nach deinem wert suchen.
das hört sich gut an. Leider ist es in meinem Fall auch möglich, das der Wert nich in der Datenbank ist. dann soll der Wert davor, als auch der Wert danach angezeigt werden. Kriegen wir das auch hin?
Es gibt nur eine dumme Frage: Ist Impotenz vererbbar?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: SQL Abfrage

  Alt 2. Aug 2004, 08:31
Das sollte man auch hinn bekommen. Wenn du die Abfrage durchgeführt hast (muss nichtmal sortiert sein) dann kannst du die ergebnisse ja einfach durchgehen und danach suchen.
Delphi-Quellcode:
var LDavor, LDahinter, LTreffer, LCount: Integer;
begin
  LDavor := -1;
  LDahinter := -1;
  LTreffer := -1;
  for LCount := 0 to GefundeneDatensaetze.count - 1 do
  begin
    if (LDavor = -1) or ((GefundeneDatensaetze[LCount].ID > LDavor) and (GefundeneDatensaetze[LCount].ID < GesuchteID)) then
       LDavor := GefundeneDatensaetze[LCount].ID;
    if (LDahinter = -1) or ((GefundeneDatensaetze[LCount].ID < LDahinter) and (GefundeneDatensaetze[LCount].ID > GesuchteID)) then
       LDahinter := GefundeneDatensaetze[LCount].ID;
    if GefundeneDatensaetze[LCount].ID = gesuchteID then LTreffer := gesuchteID;
  end;
end;
Das ganze ist nur PseudoCode der veranschaulichen soll wie das ganze funktioniert, kann also nicht eins zu eins abgetippt werden und soll somit auch nur als denkanstoß dienen (hoffe ich hab kein Denkfehler dabei)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von motu
motu

Registriert seit: 20. Jul 2004
76 Beiträge
 
Delphi 6 Professional
 
#7

Re: SQL Abfrage

  Alt 2. Aug 2004, 08:33
Hmm. Ich glaube Du bist zu sehr auf die ID fixiert. Die ID hilft mir nichts, da sie in keinem Zusammenhang mit den Werten steht, es mir aber um die Werte geht.
Es gibt nur eine dumme Frage: Ist Impotenz vererbbar?
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: SQL Abfrage

  Alt 2. Aug 2004, 08:35
Dann musst du eben ID durch den anderen Spaltenwert ersetzen, es geht ja nur um das funktionsprinzip, das letztendliche proggen musst du eh selbst.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von motu
motu

Registriert seit: 20. Jul 2004
76 Beiträge
 
Delphi 6 Professional
 
#9

Re: SQL Abfrage

  Alt 2. Aug 2004, 08:37
Zitat von SirThornberry:
Dann musst du eben ID durch den anderen Spaltenwert ersetzen, es geht ja nur um das funktionsprinzip, das letztendliche proggen musst du eh selbst.
Hmm. Hmm. Hmm.
Dann kann ich aber wiederrum nicht mit +1 und -1 arbeiten. Ich schau mir grad eh eine SQL basierte Lösung an, damit ich das ganze auch gleich für ASP verwenden kann.
Es gibt nur eine dumme Frage: Ist Impotenz vererbbar?
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: SQL Abfrage

  Alt 2. Aug 2004, 08:55
Du mußt zuerst mal sagen, von welchem Kriterium es abhängt, was "davor" oder "dahinter" bedeutet. Wenn es sich nicht um die ID handelt, was dann ?
Zitat:
Leider ist es in meinem Fall auch möglich, das der Wert nich in der Datenbank ist.
Das hört sich so an, als würdest du nach was suchen, was es nicht gibt und wenn es was nicht gibt, dann nach etwas ähnlichem von nichts. Das ist aber nun mal alles.

Ich will damit sagen, daß die Fragestellung so unpräzise ist, daß wohl niemand etwas damit anfangen kann. Wie es aussieht gilt das mittlerweile auch für die DB. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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