Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL - Abfrage mit Max (https://www.delphipraxis.net/100326-sql-abfrage-mit-max.html)

HolgerCW 26. Sep 2007 11:49

Datenbank: ORACLE • Version: 9 • Zugriff über: BDE

SQL - Abfrage mit Max
 
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

mkinzler 26. Sep 2007 11:59

Re: SQL - Abfrage mit Max
 
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;

HolgerCW 26. Sep 2007 12:03

Re: SQL - Abfrage mit Max
 
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

mkinzler 26. Sep 2007 12:08

Re: SQL - Abfrage mit Max
 
Dann erweitere doch die Bedingung

HolgerCW 26. Sep 2007 12:12

Re: SQL - Abfrage mit Max
 
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

HolgerCW 26. Sep 2007 12:15

Re: SQL - Abfrage mit Max
 
und wenn ich mit mit WHERE kann ich auch nicht

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

Was muss ich tuen ?

Guss

Holger

DeddyH 26. Sep 2007 12:16

Re: SQL - Abfrage mit Max
 
Und so?
SQL-Code:
WHERE t2.datum < sysdate - 1

Hansa 26. Sep 2007 12:23

Re: SQL - Abfrage mit Max
 
Wie wärs hiermit ?

SQL-Code:
select first 1 XY from Z order by Datum desc;
Aber Achtung : das first heißt in Oracle anders.

HolgerCW 26. Sep 2007 12:26

Re: SQL - Abfrage mit Max
 
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

Torpedo 26. Sep 2007 12:39

Re: SQL - Abfrage mit Max
 
Zitat:

Zitat von HolgerCW
und wenn ich mit mit WHERE kann ich auch nicht

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

Was muss ich tuen ?

Guss

Holger

Probiers mal mit HAVING


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz