Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Ergebnis äßt sich nicht sortieren (https://www.delphipraxis.net/118092-ergebnis-aesst-sich-nicht-sortieren.html)

Privateer3000 31. Jul 2008 10:39

Datenbank: MDB • Zugriff über: ADO

Ergebnis äßt sich nicht sortieren
 
Hallöchen,
ich habe ein Problem mit diesem SQL-String:
SQL-Code:
SQL.Text:='SELECT A.id,B.kurz,sum(A.menge) AS malle FROM p_archiv AS A'+
              ' INNER JOIN punktdb AS B'+
              ' ON A.id=B.id'+
              ' GROUP BY A.id,B.kurz'+
              ' ORDER BY malle';
Der Versuch nach "malle" zu sortieren schlägt mit der Meldung fehl:
malle hat keinen Standardwert.
Warum geht das nicht und wie bestimmt man die Sortierrichtung?!

DeddyH 31. Jul 2008 10:41

Re: Ergebnis äßt sich nicht sortieren
 
Versuch mal
SQL-Code:
SQL.Text:='SELECT A.id,B.kurz,sum(A.menge) AS malle FROM p_archiv AS A'+
              ' INNER JOIN punktdb AS B'+
              ' ON A.id=B.id'+
              ' GROUP BY A.id,B.kurz'+
              ' ORDER BY sum(A.menge) ASC';
ASC = aufsteigend, DESC = absteigend

Privateer3000 31. Jul 2008 10:46

Re: Ergebnis äßt sich nicht sortieren
 
Grandios! So geht es.
ASC und DESC kenn ich ja noch vom PHP her.
Aber warum muss der gesamte Ausdruck benutzt werden und nicht sein Alias?
Muss man nicht verstehen...

Danke Deddy!

marabu 31. Jul 2008 10:58

Re: Ergebnis äßt sich nicht sortieren
 
Hi,

noch ein kleiner Tipp zur Vermeidung von Redundanz:

SQL-Code:
SELECT a.id, b.kurz, SUM(a.menge) AS malle
FROM p_archiv AS a
INNER JOIN punktdb AS b ON a.id = b.id
GROUP BY a.id, b.kurz
ORDER BY 3
Freundliche Grüße

Union 31. Jul 2008 11:00

Re: Ergebnis äßt sich nicht sortieren
 
Die numerische Angabe von Spalten in GROUP und ORDER wird IMHO bei Acess nicht unterstützt.

marabu 31. Jul 2008 11:46

Re: Ergebnis äßt sich nicht sortieren
 
Hallo,

mit ACCESS 2003 können Spalten numerisch angegeben werden - andere Versionen stehen mir nicht zum Test zur Verfügung.

Auch ein Sub-Select kann eine Alternative sein:

SQL-Code:
SELECT * FROM (
  SELECT a.id, b.kurz, SUM(a.menge) AS malle
  FROM p_archiv AS a
  INNER JOIN punktdb AS b ON a.id = b.id
  GROUP BY a.id, b.kurz
) ORDER BY malle
Freundliche Grüße

Codewalker 31. Jul 2008 13:12

Re: Ergebnis äßt sich nicht sortieren
 
In Oracle kann man auch nicht im gleichen Select die Alias-Namen verwenden, weil beim Erzeugen vom Ausführungsplan das GroupBy vor den Aliasnamen verarbeitet wird. Ist also nicht nur bei Access so...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:08 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