Page 1 of 1

größten select wert?

PostPosted: Tue Nov 15, 2005 3:13 pm
by Leonidas2387
Hallo Leute ich brauch mal wieder hilfe.

Ich hab in einer Datenbank-Tabelle einträge die durchnummeriert sind (sozusagen mit einem Zähler), jetzt brauch ich den "wert" mit dem größtem Zähler.

Select single * from xxx where zähler ???

wie muss ich es formulieren? Irgendwie steh ich da auf dem Schlauch

Danke + Gruss
Juli

PostPosted: Tue Nov 15, 2005 3:28 pm
by Edin1867
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. SELECT max( zaehler ) FROM...
GeSHi ©

PostPosted: Tue Nov 15, 2005 4:00 pm
by Leonidas2387
wenn ich aber als zähler Datum und uhrzeit (brauch größtes Datum und späteste Zeit) habe kann ich das nicht mit einem Befehl realisieren, oder.

SELECT max( datum uhrzeit ) FROM... ???
(hab kein system zur hand)

PostPosted: Tue Nov 15, 2005 4:27 pm
by Valentin1455
datum und uhrzeitfelder funktionieren auch. Allerdings kann der max glaube nur ein Feld dahinter haben. Muss man dann glaube über Subqueries hinbiegen:

SELECT * FROM table AS k INTO line WHERE
date = ( SELECT MAX( date ) FROM
table )
AND time = ( SELECT MAX( time ) FROM
table AS l WHERE k~date = l~date ).
ENDSELECT.

so funktioniert es glaub ich. Allerdings keine Garantie auf die Performance :)

Re: größten select wert?

PostPosted: Tue Aug 05, 2014 4:16 pm
by Eveline3480
Hallo zusammen
Diese Lösung klingt zwar super, kann ich meiner Meinung so aber nicht anwenden :-(

Ich möchte ebenfalls den neusten Eintrag aus der Tabelle CDHDR auslesen, wobei eine Belegnummer öfter vorkommen kann.
Beispiel
102001614030.07.201410:58:49
102001614005.08.201414:50:54

Nun möchte ich den Beleg 1020016140 welcher das jüngste Datum und Uhrzeit hat.

Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. SELECT * INTO CORRESPONDING FIELDS OF TABLE it_cdhdr
  2.   UP TO 1 ROWS
  3.     FROM cdhdr
  4.     WHERE objectclas = 'VERKBELEG'
  5.       AND ( tcode    = 'VA41' OR tcode = 'VA42' )
  6.       AND udate     >= gv_datum
  7.       AND utime     >= gv_zeit
  8.     ORDER BY objectid udate utime DESCENDING.
GeSHi ©


Die Werte gv_datum und gv_zeit holt er aus einer Tabelle welche nach jedem Durchlauf meines Programmes mit dem aktuellen Tagesdatum und aktuelle Zeit aktualisiert wird. Daher muss ich die WHERE Bedingung so lassen. Er darf ja nur Belege holen die seit dem letzten Lauf des Programmes neu angelegt wurden.

Dieser Select schien mir des Problems Lösung - Fehlalarm :-( Er nimmt natürlich den Datensatz mit dem Datum 30.07....

Was mach ich falsch? Gibt es eine schlaue elegante Lösung?

Danke im Voraus und liebe Grüsse
nila

Re: größten select wert?

PostPosted: Tue Aug 05, 2014 5:19 pm
by Joeline5261
Hallo,

Order by ...... ascending sollte passen.

Gruß
Wolfgang

Re: größten select wert?

PostPosted: Wed Aug 06, 2014 6:46 am
by Eveline3480
Hallo wreichelt
Danke für deine Antwort.
Hab ich auch schon versucht. Gleiches Ergebnis.
Descending sollte eigentlich das gewünschte Ergebnis bringen - sollte... ;-) Drum steh ich auch an.
Vielleicht hab ich irgendwo ein übelregungsfehler. Ich forste weiter.
Gruss nila

Re: größten select wert?

PostPosted: Wed Aug 06, 2014 8:31 am
by Eveline3480
Hab die Lösung gefunden.

Dieser Select funktioniert so wunderbar, ABER man sollte bei der ORDER BY auch die Schlüsselfelder der Tabelle berücksichtigen.
Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. SELECT * INTO CORRESPONDING FIELDS OF TABLE it_cdhdr
  2.   UP TO 1 ROWS
  3.     FROM cdhdr
  4.     WHERE objectclas = 'VERKBELEG'
  5.       AND ( tcode    = 'VA41' OR tcode = 'VA42' )
  6.       AND udate     >= gv_datum
  7.       AND utime     >= gv_zeit
  8.     ORDER BY objectid [color=#0000FF]changenr[/color] DESCENDING.
GeSHi ©

Dann funktioniert es wunderbar wie gewünscht! :-)

Ansonsten werden die Kriterien welche ich ursprünglich angegeben habe (Datum und Zeit) von den Schlüsselfeldern übersteuert.

Liebe Grüsse
nila