Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Select - group by ? Distinct? (https://www.delphipraxis.net/160992-select-group-distinct.html)

-187- 11. Jun 2011 01:48

Datenbank: Firebird • Version: 2 • Zugriff über: IB

Select - group by ? Distinct?
 
Moin,

ich habe eine Datenbank die so aufgebaut ist:
Code:
FELD0|FELD1|FELD2|FELD3|FELD4
0001|Auto|1000|50|30
0002|Fahrrad|4000|10|30
0003|Auto|10000|90|30
0004|Auto|20000|90|30
0005|Bus|100|70|30
Jetzt möchte ich die Datenbank abfragen unter Berücksichtung folgender Punkte:
-Wenn es in Feld1 Duplikate gibt soll nur das erste Vorkommnis abgerufen werden
-Die Abfrage soll nach Feld0 ASC sortiert werden.

Jetzt habe ich an sowas gedacht:

Code:
SELECT * FROM TABLE SORT BY FELD0 ASC GROUP BY FELD1
Das klappt aber nicht weil man GROUP BY meines Wissens nach nur auf die Gesamte Abfrage anwenden kann. Wie würdert ihr das Problem lösen ?

DeddyH 11. Jun 2011 07:30

AW: Select - group by ? Distinct?
 
Ungetestet:
SQL-Code:
SELECT
  *
FROM
  Tabelle A
WHERE
  Feld0 = (
    SELECT
      MIN(Feld0)
    FROM
      Tabelle
    WHERE  
      Feld1 = A.Feld1)
ORDER BY
  Feld0

fkerber 11. Jun 2011 08:27

AW: Select - group by ? Distinct?
 
Hi,

Zitat:

Zitat von -187- (Beitrag 1105776)
-Wenn es in Feld1 Duplikate gibt soll nur das erste Vorkommnis abgerufen werden

wie definierst du denn erstes Vorkommnis? Der Datensatz mit der kleineren ID (Feld0) oder der Datensatz, in dem Feld1 den kleineren Wert enthält?


Liebe Grüße,
Frederic

DeddyH 11. Jun 2011 08:32

AW: Select - group by ? Distinct?
 
Die Frage hatte ich mir auch gestellt, aber da er nach Feld0 aufsteigend sortieren möchte hab ich mich auf den kleinsten Wert dieses Feldes festgelegt. Falls das nicht richtig ist, muss man statt MIN eben etwas anderes einsetzen ;)

-187- 11. Jun 2011 09:15

AW: Select - group by ? Distinct?
 
Achso sorry ich definiere nach dem Datensatz mit der kleineren ID (FELD0)!

Hmm den Code versteh ich nicht so ganz, was hat es mit dem "A" aufsich ? :)

//Edit: Dient das A als Referenz auf die Tabelle?

DeddyH 11. Jun 2011 09:25

AW: Select - group by ? Distinct?
 
Das A ist nur ein Alias, da ich 2 mal dieselbe Tabelle anspreche. Irgendwie muss ich ja die Datenmengen auseinanderhalten, um vergleichen zu können.

-187- 11. Jun 2011 11:44

AW: Select - group by ? Distinct?
 
Macht Sinn und funktioniert, ich bin begeistert.

Vielen Dank für den Code :)

Cheers


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