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 2 von 3     12 3      
Benutzerbild von motu
motu

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

Re: SQL Abfrage

  Alt 2. Aug 2004, 08:05
Zitat von Hansa:
Wenn es sich nicht um die ID handelt, was dann ?
Um Messwerte.

Zitat von Hansa:
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.
Das ist so falsch. Ich suche zwar nach etwas, das es so direkt nicht gibt, weiß aber ganz genau, das es etwas kleineres und etwas größeres gibt. z.B. meine Werte sehen so aus:
20
30
Wenn ich nun 25 habe, ist der nicht in der DB aber davor und danach gibt es was.

Zitat von Hansa:
Ich will damit sagen, daß die Fragestellung so unpräzise ist, daß wohl niemand etwas damit anfangen kann.
Hmm. Trotz langer Überlegung meinerseits war es doch schwierig es halbwegs verstänldich auszudrücken.

Zitat von Hansa:
Wie es aussieht gilt das mittlerweile auch für die DB. 8)
Selig sind die geistig Armen.
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
 
#12

Re: SQL Abfrage

  Alt 2. Aug 2004, 08:11
Aha, deine Werte sind "Mess"werte. Wieso sagst du das nicht gleich ? 8)

Zitat von motu:
Selig sind die geistig Armen.
Ich will nicht hoffen, daß du selig wirst, denn die Lösung steht schon längst in meinem ersten Beitrag zum Thema.
Gruß
Hansa
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#13

Re: SQL Abfrage

  Alt 2. Aug 2004, 10:27
Vielleicht funktioniert ja so etwas in der Art bei Dir: (konnte es nicht richtig ausprobieren, habe nur MySQL und das ist mit UNION und Sortierung überfordert und TOP muss mit LIMIT gemacht werden)
Code:
(SELECT TOP 1 * FROM Messwerte WHERE (Wert<x) ORDER BY Wert DESC) UNION
(SELECT * FROM Messwerte WHERE (Wert=x)) UNION
(SELECT TOP 1 * FROM Messwerte WHERE (Wert>x) ORDER BY Wert ASC);
x ist der gesuchte Messwert.

Gruß, teebee
  Mit Zitat antworten Zitat
Benutzerbild von motu
motu

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

Re: SQL Abfrage

  Alt 2. Aug 2004, 10:30
Zitat von teebee:
Code:
(SELECT TOP 1 * FROM Messwerte WHERE (Wert<x) ORDER BY Wert DESC) UNION
(SELECT * FROM Messwerte WHERE (Wert=x)) UNION
(SELECT TOP 1 * FROM Messwerte WHERE (Wert>x) ORDER BY Wert ASC);
Danke. Genau daran arbeite ich grad, dabei bekomm ich aber einen Spaltenfehler. Die ORDER BY Bedingung ist in meinen Augen obsolet, da die Ergebnissmenge von TOP/MAX/GREATEST ja eigentlich nur einen Wert enthalten kann.
Es gibt nur eine dumme Frage: Ist Impotenz vererbbar?
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#15

Re: SQL Abfrage

  Alt 2. Aug 2004, 10:51
Zitat von motu:
Die ORDER BY Bedingung ist in meinen Augen obsolet, da die Ergebnissmenge von TOP/MAX/GREATEST ja eigentlich nur einen Wert enthalten kann.
Nein, ist sie nicht. Lässt du order by weg, wird nach deinem Primary Key ausgegeben, und top 1 liefert dir den Datensatz mit der kleinsten ID, und nicht den mit dem größten Messwert.

Gruß,
Tom
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#16

Re: SQL Abfrage

  Alt 2. Aug 2004, 10:53
Moin Motu

Ich muss sagen, ich habe irgendwie nicht ganz kapiert worum es dir geht.

Ist es so?
  • Wert
    1
    2
    3
    4
    5
    7
Code:
[b]Vorgäger Wert Nachfolger[/b]
  <null>    1           2
       1     2           3
       2     3           4
       3     4           5
       4     5      <null>
Das wäre würdest du so hinbekommen:
SQL-Code:
SELECT Ref.DeinFeld As Val
      ,Tab1.DeinFeld As Pred
      ,Tab2.DeinFeld As Succ
FROM DeineTabelle Tab1
      ,DeineTabelle Tab2
      ,DeineTabelle Ref
WHERE Tab1.DeinFeld = Ref.DeinFeld - 1 And
       Tab2.DeinFeld = Ref.DeinFeld + 1
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#17

Re: SQL Abfrage

  Alt 2. Aug 2004, 10:57
Ich habs mit MySQL gemacht und da gibt es kein TOP, da muss man es mit ORDERBY und LIMIT 'emulieren', Du kannst Dir das ORDERBY also tatsächlich sparen. Ein Statement, das auf jeden Fall funktioniert (habe es jetzt direkt im MySQL-Client getestet und nicht in MySQL-Front, was offensichtlich mit geklammerten Statements nicht klarkommt) ist dieses hier:
Code:
(SELECT * FROM Messwerte WHERE (wert<x) ORDERBY wert DESC LIMIT 1) UNION
(SELECT * FROM Messwerte WHERE (wert=x)) UNION
(SELECT * FROM Messwerte WHERE (wert>x) ORDERBY wert LIMIT 1);
Gruß, teebee
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#18

Re: SQL Abfrage

  Alt 2. Aug 2004, 10:59
Zitat von Robert_G:
Ich muss sagen, ich habe irgendwie nicht ganz kapiert worum es dir geht.
Hallo Robert_G,

gesucht wird zu einem Messwert x dessen direkter kleinster und größter Nachbar.

Bsp: Messwerte = (4,5,7,8,9,10).

Mit x = 7 soll z.B. Folgendes ausgegeben werden: 5,7,8
x=6: 5,7

Gruß,
Tom
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#19

Re: SQL Abfrage

  Alt 2. Aug 2004, 11:02
Moin, moin,

Zwischenfragen:

Sind die Messwerte in einer zeitlichen Abfolge?
Oder suchst Du nur die Wertmäßige Abfolge.

Oder hast einen Wert µ um den du herum nur jeweils
einen Wert suchst um diesen neu zu interpolieren ?

Grüße // Martin
Martin Schaefer
  Mit Zitat antworten Zitat
Benutzerbild von motu
motu

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

Re: SQL Abfrage

  Alt 2. Aug 2004, 11:32
Zitat von mschaefer:
Sind die Messwerte in einer zeitlichen Abfolge?
Oder suchst Du nur die Wertmäßige Abfolge.
Wertmäßig.

Zitat von mschaefer:
Oder hast einen Wert µ um den du herum nur jeweils
einen Wert suchst um diesen neu zu interpolieren ?
ich suche die umliegenden, um diese einfach anzeigen zu lassen.

Inzwischen habe ich mein Ziel allein durch Anpassung des SQL-Statements erreicht. Mal sehen, was als nächstes kommt.
Es gibt nur eine dumme Frage: Ist Impotenz vererbbar?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 00:18 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