AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi SQL - Abfrage mit Max
Thema durchsuchen
Ansicht
Themen-Optionen

SQL - Abfrage mit Max

Ein Thema von HolgerCW · begonnen am 26. Sep 2007 · letzter Beitrag vom 27. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

SQL - Abfrage mit Max

  Alt 26. Sep 2007, 11:49
Datenbank: ORACLE • Version: 9 • Zugriff über: BDE
Hallo zusammen,

ich habe zwei Tabellen.

Tabelle1:

AUFTRAGNR, TEXT
1, Test1
2, Test2

Tabelle2:

AUFTRAGNR, DATUM
1, 11.10.2007
1, 12.10.2007
1, 13.10.2007
2, 10.10.2007
2, 11.10.2007

Nun möchte ich die Tabellen so verknüpfen, dass von jeder Auftragsnr. nur das grösste Datum angezeigt wird.
-> Einschränkung: Es werden nur Datums berücksichtigt, wo das maximale Datum, älter als 1 Tag ist.
-> angenommenes heutiges Datum: 12.10.2007

Ergebnis:

AUFTRAGNR, TEXT, DATUM
2, 11.10.2007

Gruss

Holger
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SQL - Abfrage mit Max

  Alt 26. Sep 2007, 11:59
SQL-Code:
select
    t2.AUFTRAGNR, Max(t2.Datum), t1.TEXT
from
    Tabelle2 t2
        join Tabelle1 t1 on t1.AUFTRAGNR=t2.AUFTRAGNR
group by
    t2.AUFTRAGNR, t1.TEXT;
Markus Kinzler
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#3

Re: SQL - Abfrage mit Max

  Alt 26. Sep 2007, 12:03
Das klappt so leider nicht,

da jetzt alle Datums berücksichtigt werden. Möchte aber nur die Auftragsnummer anzeigen, wenn das Maximale Datum ÄLTER ALS 1 TAG ist. Da ist der Knackpunkt.

Gruss

Holger
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: SQL - Abfrage mit Max

  Alt 26. Sep 2007, 12:08
Dann erweitere doch die Bedingung
Markus Kinzler
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#5

Re: SQL - Abfrage mit Max

  Alt 26. Sep 2007, 12:12
aber wie ?

Delphi-Quellcode:
select
    t2.AUFTRAGNR, Max(t2.Datum), t1.TEXT
from
    Tabelle2 t2
        left join Tabelle1 t1 on t1.AUFTRAGNR=t2.AUFTRAGNR
        and max(t2.datum) < sysdate - 1
group by
    t2.AUFTRAGNR, t1.TEXT;
Kann ja keine Max - Abfrage im Join verwenden.

Gruss

Holger
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#6

Re: SQL - Abfrage mit Max

  Alt 26. Sep 2007, 12:15
und wenn ich mit mit WHERE kann ich auch nicht

WHERE MAX(t2.datum) < sysdate - 1 machen.

Was muss ich tuen ?

Guss

Holger
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: SQL - Abfrage mit Max

  Alt 26. Sep 2007, 12:16
Und so?WHERE t2.datum < sysdate - 1
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Hansa

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

Re: SQL - Abfrage mit Max

  Alt 26. Sep 2007, 12:23
Wie wärs hiermit ?

select first 1 XY from Z order by Datum desc; Aber Achtung : das first heißt in Oracle anders.
Gruß
Hansa
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#9

Re: SQL - Abfrage mit Max

  Alt 26. Sep 2007, 12:26
So würde es klappen,

nur muss die Abfrage auf das Maximale Datum gehen, da sonst wie im Beispiel auch die Auftragsnummer 1 angezeigt würde, da dort ja auch Datums existieren, die älter als 1 Tag sind.

Gruss

Holger
  Mit Zitat antworten Zitat
Torpedo

Registriert seit: 21. Dez 2003
410 Beiträge
 
#10

Re: SQL - Abfrage mit Max

  Alt 26. Sep 2007, 12:39
Zitat von HolgerCW:
und wenn ich mit mit WHERE kann ich auch nicht

WHERE MAX(t2.datum) < sysdate - 1 machen.

Was muss ich tuen ?

Guss

Holger
Probiers mal mit HAVING
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 14:25 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