Peter A.: Select Max(..) von MySQL 4.1 nach 4.0 portieren

Beitrag lesen

Hallo Ilja,

Danke für deine Antwort.
Also mein Datenmodell sieht grob aus wie folgt:

Tabelle 1 (Content):
 nboard: id | category_id | topic | created

Tabelle 2 (Categories):
 nboard_categories: id | category

Ich habe es jetzt mal anhand der MySQL-Docu mittels
GROUP BY und HEAVING versucht.
Hier ein paar Beispiele:

==1==
SELECT
 max( modul.created ) AS 'maxcreated',
 modul.topic,
 cats.category
FROM
 nboard modul
LEFT JOIN
 nboard_categories cats ON modul.category_id = cats.id
GROUP BY
 modul.category_id
HEAVING
 modul.created = maxcreated     (modul.created logischerweise unbekannt)

==2==
select
  max( modul.created ) AS 'created',
  modul.topic,
  cats.category
from
  nboard modul,
  nboard_categories cats
where
  modul.category_id = cats.id
group by
  modul.category_id
ORDER BY
  modul.category_id ASC,
  modul.created DESC

==3==
SELECT
 modul.created AS 'curcreated',
 max( modul.created ) AS 'maxcreated',
 modul.topic,
 cats.category
FROM
 nboard modul
LEFT JOIN
 nboard_categories cats ON modul.category_id = cats.id
GROUP BY
 cats.category
HAVING
 curcreated = maxcreated

Die Daten, die bei Nummer 2 ankommen, sehen teils auch
schon recht gut aus. In dem Fall bekomme ich zB für jede
Kategorie das jeweils aktuellste Created-Datum. Als weitere
Spalte die Cat-Id, und als dritte Spalte den Topic. Der
allerdings verweist fälschlicherweise immer auf den ersten
Eintrag einer jeden Kategorie (der mit der niedrigsten ID).
Hinsichtlich der Zuordnung zwischen der Category-Id und dem
Created-Datum scheint widerum alles OK zu sein.

Daraus schließe ich, dass wohl keine direkte Verbindung
zwischen den gefetchten Daten eines Datensatzes besteht.

Entweder müsste ich Die Verbindung erstmal herstellen, oder
ich müsste es auch noch irgendwie schaffen den neusten topic
auszulesen. Allerdings bekäme ich an dieser Stelle dann
Probleme, was das Auslesen weiterer Parameter der Modul-
Tabelle (hier ausgeblendend) anbelangt.

Was meinst Du dazu?

MfG
Peter A.