Rückgabe des Datensatzes mit dem Längsten Feldinhalt

Rückgabe des Datensatzes mit dem Längsten Feldinhalt

am 23.06.2006 22:15:13 von nosse

Hallo,

bis jetzt hatte ich immer nur einfache SQL-Abfragen mit denen ich gut
klar gekommen bin. Nun suche ich aber etwa, wo ich noch keinen Ansatz habe.

Was habe ich:

Ich habe eine kleine MySQL(4.1) Datenbank mit u.a. der Tabelle
Kommentare. In dieser Tabelle gibt es u.a. Felder für Benutzer, Test,
Zeit ... und Ergebnis.


Was möchte ich:

Ich möchte mir für einen bestimmten Test den Datensatz ausgeben lassen
der im Feld Ergebnis die meisten Zeichen stehen hat.

Der Anfang:

Select Benutzer, ... Test, Ergebnis from Kommentare where Test='Alpha7'

Wie bekomme ich das nun mit dem längsten Feld Ergebnis hin ?

Danke füre eure Hilfe.

Gruß,

Matthias Noßmann

Re: Rückgabe des Datensatzes mit dem Längsten Feldinhalt

am 23.06.2006 22:57:04 von ascii158

Matthias Noßmann wrote:

Moin,

> Was möchte ich:
>
> Ich möchte mir für einen bestimmten Test den Datensatz ausgeben lassen
> der im Feld Ergebnis die meisten Zeichen stehen hat.
>
> Der Anfang:
>
> Select Benutzer, ... Test, Ergebnis from Kommentare where Test='Alpha7'

AND LENGTH(Ergebnis)=(SELECT MAX(LENGTH(Ergebnis)) FROM Kommentare);

Grüße,
--
Philipp Tölke
PGP 0x96A1FE7A

Re: Rückgabe des Datensatzes mit dem Längsten Feldinhalt

am 24.06.2006 01:40:18 von nosse

Hallo,

Philipp Tölke schrieb:
> Matthias Noßmann wrote:
>> Was möchte ich:
>>
>> Ich möchte mir für einen bestimmten Test den Datensatz ausgeben lassen
>> der im Feld Ergebnis die meisten Zeichen stehen hat.
>>
>> Der Anfang:
>>
>> Select Benutzer, ... Test, Ergebnis from Kommentare where Test='Alpha7'
>
> AND LENGTH(Ergebnis)=(SELECT MAX(LENGTH(Ergebnis)) FROM Kommentare);

Danke für die schnelle Antwort.
Beim probieren habe ich bemerkt, das ich etwas wichtiges vergessen habe.

Die Werte im Feld Test sind dynamisch.
z.B.

Benutzer Test Ergebnis
b1 T1 83
b1 T1 832849294898924
b2 T1 6344
b3 T2 3240399
b1 T3 21
b4 T3 6547658
b2 T3 46587

Ergebnis soll nun sein:

Benutzer Test Ergebnis
b1 T1 832849294898924
b3 T2 3240399
b4 T3 6547658


Also sollen alle Datensätze für einen Test gesucht werden und dann der
ausgegeben werden mit dem längsten Ergebenis --> 1. Datensatz
Dann den nächsten Test suchen, wieder den Datensatz mit dem längsten
Ergebnis und diesen ausgeben. --> 2. Datensatz


Select Benutzer, .... Test, Ergebnis from Kommentare order by test ....
where test= ??? AND LENGTH(Ergebnis)=(SELECT MAX(LENGTH(Ergebnis)) FROM
Kommentare);

Danke für jede Hilfe.

Gruß,

Matthias

Re: Rückgabe des Datensatzes mit dem Längsten Feldinhalt

am 24.06.2006 09:51:42 von ascii158

Matthias Noßmann wrote:
> Hallo,
>
> Philipp Tölke schrieb:
>> Matthias Noßmann wrote:
>>> Was möchte ich:
>>>
>>> Ich möchte mir für einen bestimmten Test den Datensatz ausgeben lassen
>>> der im Feld Ergebnis die meisten Zeichen stehen hat.
>>>
>>> Der Anfang:
>>>
>>> Select Benutzer, ... Test, Ergebnis from Kommentare where Test='Alpha7'
>>
>> AND LENGTH(Ergebnis)=(SELECT MAX(LENGTH(Ergebnis)) FROM Kommentare);
>
> Danke für die schnelle Antwort.
> Beim probieren habe ich bemerkt, das ich etwas wichtiges vergessen habe.
>
> [...]
>
> Also sollen alle Datensätze für einen Test gesucht werden und dann der
> ausgegeben werden mit dem längsten Ergebenis --> 1. Datensatz
> Dann den nächsten Test suchen, wieder den Datensatz mit dem längsten
> Ergebnis und diesen ausgeben. --> 2. Datensatz

SELECT Test, MAX(LENGTH(Ergebnis)) FROM Kommentare GROUP BY Test

Grüße,
--
Philipp Tölke
PGP 0x96A1FE7A