Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Größte Zahl in Table (Anfängerfrage) (https://www.delphipraxis.net/190685-groesste-zahl-table-anfaengerfrage.html)

beanbear6 27. Okt 2016 08:23

Delphi-Version: 7

Größte Zahl in Table (Anfängerfrage)
 
Hi,
ich hab in einer TTable viele Datensätze. In einigen Zeilen im Feld (merk) stehen verschiedene Zahlen (Integer), aber nicht in jeder Zeile. Gibt es eine einfache Möglichkeit, die größte Zahl zu ermitteln? Ich hab gelesen, dass es MAX gibt, das geht aber wohl nicht mit einem Datenbankfeld oder? Bin für jeden Tip dankbar.
Gruß Reiner

trojaner 27. Okt 2016 08:34

AW: Größte Zahl in Table (Anfängerfrage)
 
Hallo

SELECT MAX(dein_int) AS Maximum
FROM deiner_Tabelle

gruss

Aviator 27. Okt 2016 08:35

AW: Größte Zahl in Table (Anfängerfrage)
 
In SQL kann man das so machen:
SQL-Code:
SELECT MAX(Feld) FROM Table
Somit wird nur der größte Wert ausgegeben. Wenn jetzt mehrere gleich große Zahlen vorhanden sind, dann musst du ggf. noch ein DISTINCT hinzufügen. Da bin ich mir aber gerade nicht sicher, ob überhaupt mehrere Datensätze zurückkommen. Da hilft dann ausprobieren oder jmd. anderen schlauen hier fragen. :wink:
SQL-Code:
SELECT DISTINCT MAX(Feld) FROM Table
.

EDIT: Roter Kasten???

Bambini 27. Okt 2016 08:38

AW: Größte Zahl in Table (Anfängerfrage)
 
Zitat:

Zitat von Aviator (Beitrag 1352103)
Wenn jetzt mehrere gleich große Zahlen vorhanden sind, dann musst du ggf. noch ein DISTINCT hinzufügen. Da bin ich mir aber gerade nicht sicher, ob überhaupt mehrere Datensätze zurückkommen. Da hilft dann ausprobieren oder jmd. anderen schlauen hier fragen. :wink:

Von MAX() kommt nur ein Datensatz zurück. Ein DISTINCT braucht es nicht.
Eine TTable kingt nach BDE. Bei einer TTable kann man keine Query ausführen. Einfach ein TQuery an die gleiche Connection hängen und das SQL Statement ausführen lassen.

beanbear6 27. Okt 2016 09:27

AW: Größte Zahl in Table (Anfängerfrage)
 
supiii! :-)
Vielen Dank!

himitsu 27. Okt 2016 10:14

AW: Größte Zahl in Table (Anfängerfrage)
 
Alternativ hätte man die TTable auch nach dieser Spalte sortieren können und schon steht am entprechenden Ende (First oder Last) der gewünschte Wert. :stupid:

Oder First bis Next+Eof durchlaufen und jeweils den größeren Wert merken, bis zuletzt der Größte übrig bleibt. :lol:

jobo 27. Okt 2016 12:37

AW: Größte Zahl in Table (Anfängerfrage)
 
Es sollte am besten ein
Code:
Select max(meinfeld), count(*) from meineTabelle
sein.
Damit würde man dann sehen, ob es mehrere Einträge mit dem Maximalwert gibt und wieviele es sind. Ein Distinct ist hier nicht notwendig.

himitsu 27. Okt 2016 12:57

AW: Größte Zahl in Table (Anfängerfrage)
 
Nein, denn Max und Count laufen über alle Daten.
Count gibt somit auch die Anzahl der ausgewerteten Datensätze an.

Sowas wie
Delphi-Quellcode:
SELECT Max(xyz), name, Count(*) FROM ...
würde/könnte mehrere Datensätze liefern, da hier nach Name gruppiert wird und Max/Count dann je über die einzelnen Gruppen laufen.

Bambini 27. Okt 2016 13:07

AW: Größte Zahl in Table (Anfängerfrage)
 
Zitat:

Zitat von jobo (Beitrag 1352125)
Es sollte am besten ein
Code:
Select max(meinfeld), count(*) from meineTabelle
sein.
Damit würde man dann sehen, ob es mehrere Einträge mit dem Maximalwert gibt und wieviele es sind. Ein Distinct ist hier nicht notwendig.

Das klappt nicht. Wenn man wissen will wieviele Einräge den Max() Wert haben:
Code:
SELECT COUNT(*) FROM meineTabelle WHERE meinfeld IN (SELECT MAX(meinfeld) FROM meineTabelle)

beanbear6 27. Okt 2016 15:11

AW: Größte Zahl in Table (Anfängerfrage)
 
Hi,
das ja noch besser :-) werd i gleich testen...
Vielen Dank!! :-)

jobo 27. Okt 2016 16:51

AW: Größte Zahl in Table (Anfängerfrage)
 
Zitat:

Zitat von himitsu (Beitrag 1352126)
Nein, denn Max und Count laufen über alle Daten.
Count gibt somit auch die Anzahl der ausgewerteten Datensätze an.

Sowas wie
Delphi-Quellcode:
SELECT Max(xyz), name, Count(*) FROM ...
würde/könnte mehrere Datensätze liefern, da hier nach Name gruppiert wird und Max/Count dann je über die einzelnen Gruppen laufen.

@himitsu,bambini, all
Ja, das ist natürlich Schrott, Bambini hats gerichtet.
(aber die Idee war ja auch ambitioniert...) ;)

himitsu 27. Okt 2016 20:24

AW: Größte Zahl in Table (Anfängerfrage)
 
Blos mal als Beispiel, dass es tausende Lösungen gibt.
Hier Eine ohne SubSelect, mit der Anzahl, wieviele MAX es gibt.
SQL-Code:
SELECT field, Count(*)
FROM table
ORDER BY field DESC
LIMIT 1

DeddyH 28. Okt 2016 07:21

AW: Größte Zahl in Table (Anfängerfrage)
 
Das funktioniert so aber auch nur unter MySQL und SQLite.

himitsu 28. Okt 2016 09:51

AW: Größte Zahl in Table (Anfängerfrage)
 
Und Postgres und wer weiß wo noch. :oops:

nahpets 28. Okt 2016 11:08

AW: Größte Zahl in Table (Anfängerfrage)
 
wirklich?

FireBird und jede andere mir bekannt Datenbank gibt eine Fehlermeldung in der Art aus:
Code:
[ODBC Firebird Driver][Firebird]Dynamic SQL Error
SQL error code = -104
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause)

select ok, count(*) from textverwaltung order by ok
Eine Spalte + Count(*) ohne Group By auf die Spalte ist eher ungewöhnlich.

Für 'ne Aggregatefunktion benötigt man eigentlich immer ein Group by, auch wenn man dann nur den ersten Satz der Ergebnismenge sehen möchte.


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