Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

MYSQL: max() problem

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
nerd
PostRank 10
PostRank 10
Beiträge: 4023
Registriert: 15.02.2005, 04:02

Beitrag von nerd » 23.11.2008, 23:21

habe hier ein seltsames problem mit mysql max(). hier meine tabelle in der die texte liegen:

Code: Alles auswählen

SELECT
id,
toc_id,
title,
revision
FROM
qh_helptext

id  toc_id  name            revision
1	2	vorstellung 6.5	        1
2	2	neu: version 6.5.1        2
3	2	test revision 3	        3

toc_id ist aehnlich einer kategorie, und jedesmal wenn ein text bearbeitet wird wird dieser neu in die tabelle eingetragen (dh beim bearbeiten gibts nur inserts; kein update auf bestehende zeilen) mit einer neuen revisions nummer (int) aber der selben toc_id. auf der webseite will ich dann aber nur die letzte revision pro toc_id anzeigen.
wie bekomme ich jetzt die komplette zeile mit der letzten revision raus? mit

Code: Alles auswählen

SELECT
id,
toc_id,
title,
MAX(revision) as max_rev
FROM
qh_helptext
GROUP BY toc_id
werden meine spalten gemixt:

Code: Alles auswählen

id  toc_id  name            revision
1	2	vorstellung 6.5	        3
aber revision 3 gehoert zu id 3, "test revision 3" - was mache ich falsch?
ich brauche hier die komplette letzte zeile (id 3) als ergebniss, und nicht ein bischen was von ueberall und nirgendwo...

Anzeige von ABAKUS

von Anzeige von ABAKUS »

Content Erstellung von ABAKUS Internet Marketing
Ihre Vorteile:
  • einzigartige Texte
  • suchmaschinenoptimierte Inhalte
  • eine sinnvolle Content-Strategie
  • Beratung und Umsetzung
Jetzt anfragen: 0511 / 300325-0

Anonymous

Beitrag von Anonymous » 23.11.2008, 23:50

du musst im grunde 2 abfragen machen, erst den max wert ermitteln und dann mit diesem in einer where clausel die dazugehörigen daten ermitteln... je nach eingesetzter mysql version geht es z.B auch über 1 unterabfrage....

bloddy newbie
PostRank 4
PostRank 4
Beiträge: 171
Registriert: 18.05.2006, 20:15

Beitrag von bloddy newbie » 24.11.2008, 07:50

zum Beispiel so:

Code: Alles auswählen

SELECT
a.id,
a.toc_id,
a.title,
a.revision
FROM
qh_helptext AS a
HAVING (SELECT MAX(x.revision) FROM qh_helptext AS x WHERE x.toc_id = a.toc_id) = a.revision