Sortierung bei GROUP BY
Hennes
- datenbank
0 Vinzenz Mai0 Hennes
0 Hennes
Hi. Ich habe zwei Tabellen, die ich bei einer Abfrage verknüpfe. Eine Tabelle mit den Händlern und eine mit den Artikeln. Jeder Händler kann alle Artikel haben. Jetzt will ich aber für einen Händler immer den Artikel anzeigen, der zuletzt zugefügt wurde. Beim Insert erhält der Artikel immer ein Datum. Wenn ich aber ein GROUP BY probiere, zeigt der mir immer den ersten Artikel an. Wie kehre ich das um? Wäre für Denkanstöße dankbar, stehe momentan total auf dem Schlauch.
+----+-----------+ +----------+--------+--------------+
| id | haendler1 | | artikel1 | datum1 | id_haendler1 |
| id | haendler2 | | artikel2 | datum2 | id_haendler1 |
| id | haendler3 | | artikel3 | datum3 | id_haendler2 |
| .. | ......... | | ........ | ...... | ............ |
+----+-----------+ +----------+--------+--------------+
Hallo Otto,
bei MySQL-Problemen ist es stets sinnvoll, die MySQL-Version anzugeben. Auch in diesem Fall.
Wenn ich aber ein GROUP BY probiere, zeigt der mir immer den ersten Artikel an.
Nein, einen zufälligen, siehe MySQL-Doku.
Wie kehre ich das um? Wäre für Denkanstöße dankbar, stehe momentan total auf dem Schlauch.
Siehe MySQL-Doku, wenn Deine MySQL-Version mindestens 4.1 ist. Erst ab dieser Version kennt MySQL Subselects.
Freundliche Grüße
Vinzenz
Ups, das hatte ich ja jetzt glatt übersehen. Sieht schonmal gut aus. Das werde ich heute Abend gleich probieren, wenn ich wieder zuhause bin.
Werden hier Threads gelöscht? Hatte doch heute Mittag hier viel mehr geschrieben?
Ich glaube, ich habe es jetzt geschafft. Das Ergebnis sieht jedenfalls ganz gut aus. Falls es jemanden interessiert, so sieht es jetzt etwa bei mir aus. Das ist wirklich auch nur beispielhaft zu sehen, ich verwende normalerweise kein SELECT * ;)
SELECT
h.*,
max(a.datum) AS max_datum
FROM
haendler h,
artikel a
WHERE h.id = a.haendler_id
GROUP BY a.haendler_id
ORDER BY max_datum DESC