phpbar.de logo

Mailinglisten-Archive

[dbs] Problem mit SELECT und GROUP

[dbs] Problem mit SELECT und GROUP

Nico Haase nico.haase at gmx.de
Mit Apr 7 17:56:01 CEST 2004


Moin,

>> [...] Wie muss ich den Query umschreiben, damit auch der richtige
>> Wert für buchnr, titel, vorname und autor gefunden wird, der
>> dem Feld entsprechen soll, welches die Länge für den MAX-Befehl
>> liefert?
>
> Steht kurz und schön im MySQL-Handbuch:
>
> 4.5.2 Die Zeile, die den höchsten Wert einer bestimmten
> Spalte enthält
> http://www.mysql.com/doc/de/example-Maximum-row.html

Kurz, aber leider nicht wirksam: Das eine Beispiel geht nur mit Subquerys, das andere verwendet wieder mehrere SELECTs...

> Wenn Du noch weißt, dass Du bei ORDER BY auch berechnete Ausdrücke
> wie MAX(...) verwenden kannst, ist das die Lösung.

Das mag ganz nett sein, aber:

SELECT buchnr, vorschlag, titel, vorname, autor, LENGTH( CONCAT( beschreibung, fazit ) ) AS laenge FROM buecher GROUP BY vorschlag ORDER BY max( laenge ) DESC;

MySQL meldet: #1111 - Falsche Verwendung der GROUP-Funktion.

Auch der Nachbarartikel http://www.mysql.com/doc/de/example-Maximum-column-group.html hilft mir nicht. Vom Thema her passt er zwar genau, kann aber nicht das richtige zurückliefern. Mein Problem kann ich aber vielleicht anhand des Beispiels etwas genauer beschreiben: Dort ist das Beispiel "Was ist der höchste Preis pro Artikel?" mit dem Query "SELECT artikel, MAX(preis) AS preis FROM shop GROUP BY artikel" angegeben. Mein Query soll nun direkt mit ausgeben, um welchen Artikel es sich da handelt, aber nicht gegroupt nach den Artikeln, sondern nach Sortimentsgruppen. Es soll also jeweils der teuerste Artikel aus dem Sortiment Waschmittel, Kloreiniger und Toilettenpapier ausgegeben werden - dabei soll es drei Spalten geben, die die Artikelbeschreibung des teuersten Artikels, seinen Preis und die Sortimentsgruppe enthalten. Mein Problem: Der höchste Preis zur Sortimentsgruppe stimmt schon völlig, aber dem wird der falsche Artikel zugeordnet.
Subquerys wären sicherlich eine herrliche Sache, aber die laufen in der Version 3.23.56 noch nicht. Und die Aufteilung in unterschiedliche Querys ist blöde, weil ich dann dreißig Querys für den MAX-Wert und nochemal 30 für den MIN-Wert brauche...
mfg
Nico

php::bar PHP Wiki   -   Listenarchive