Seite 1 von 1

MySQL - Text Versionen

Verfasst: 03.08.2004 16:29
von xardias
Hallo !
ich möchte in einer MySQL Tabelle verschiedene versionen eines Textes speichern. die Spalte 'id' ist kennzeichnent für einen text und 'version' ein integer für die Version des textes. Jedoch ist 'id' nicht einzigartig, da mehrere texte mit der selben id aber unterschiedlichen versionen existieren können.
Jetzt wollte ich mit einem MySQL Query die aktuellsten Versionen sämtcher Texte selecten.
Mein erster Ansatz war:

Code: Alles auswählen

SELECT a.id , a.version , a.short , a.full FROM y2k1_kbase a GROUP BY a.id
somit bekomme ich immer eine version des textes. die höchste version eines textes, die existiert, kann ich mit max( a.version ) bekommen. jedoch weiß ich nicht, wie ich die ganze zeile für diese letzte version bekomme.
Zusammenfassend: Wie kann ich die aktuellste version (höchter wert in 'version') aller texte mti einem query bekommen ?

danke
xardias

Verfasst: 03.08.2004 17:31
von D@ve
Hab nicht ganz genau verstanden was Du willst, aber was Du suchst ist wahrscheinlich:

Code: Alles auswählen

SELECT a.id , MAX (a.version)...
Gruß, Dave

Verfasst: 03.08.2004 18:13
von xardias
damit bekomme ich nur die maximale version ausgegeben.
aber wenn ich das so amchen würde wie du es vorschlägst, dann bekomme ich dabei NICHT den aktuellen text dazu.

Verfasst: 03.08.2004 18:48
von k-5
probier mal das .. bin mir zwar nicht ganz sicher .. nenn versuch isses aber wert ..

Code: Alles auswählen

SELECT DISTINCT a.id, a.text FROM a ORDER BY a.id, a.version DESC;
n.t. (also vielleicht ne kleine anpassung nötig)

Verfasst: 03.08.2004 19:44
von xardias
so bekomme ich den Kram sortiert zurück. doch das bringt mir nicht viel.

SELECT a.id , a.version , a.short , a.full FROM y2k1_kbase a GROUP BY a.id
Wenn ich das ergebnis davon ausgebe, bekomme ich ja jeweils die erste Reihe aus jeder Gruppe zurück. Aber irgendwie werde ich das doch umschreiben können, dass ich die Reihe mit der höchsten version zurück bekomme ?

Verfasst: 03.08.2004 19:49
von k-5
was willst du genau ? ..
die neuste version _einer_ bestimmten id ..

Code: Alles auswählen

select a.id, a.text .. where a.id='$id' order by a.version DESC limit 1;
sollte das gewünschte ergebnis liefern .. (wieder n.t.)

ne liste aller id's mit den jeweiligen neusten versionen ? ..

das letzte müsste meins machen .. meine erste lösung .. es sortiert nicht nur .. DISTINCT ist da das besondere dran ..