MySQL - Text Versionen

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
xardias
Mitglied
Beiträge: 5
Registriert: 25.06.2004 16:32
Wohnort: Moers
Kontaktdaten:

MySQL - Text Versionen

Beitrag 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
Benutzeravatar
D@ve
Ehemaliges Teammitglied
Beiträge: 3842
Registriert: 28.08.2002 19:33
Wohnort: Bretzfeld
Kontaktdaten:

Beitrag 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
There are only 10 types of people in the world: Those who understand binary, and those who don't
xardias
Mitglied
Beiträge: 5
Registriert: 25.06.2004 16:32
Wohnort: Moers
Kontaktdaten:

Beitrag 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.
Benutzeravatar
k-5
Mitglied
Beiträge: 166
Registriert: 05.06.2003 23:21
Wohnort: soa kaff
Kontaktdaten:

Beitrag 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)
ich will mein auto polieren ! ..

ja .. ich weiß .. man kann das mit nem lappen machen .. aber ICH will unbedingt nen hammer nehmen .. WIE geht das :)
xardias
Mitglied
Beiträge: 5
Registriert: 25.06.2004 16:32
Wohnort: Moers
Kontaktdaten:

Beitrag 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 ?
Benutzeravatar
k-5
Mitglied
Beiträge: 166
Registriert: 05.06.2003 23:21
Wohnort: soa kaff
Kontaktdaten:

Beitrag 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 ..
ich will mein auto polieren ! ..

ja .. ich weiß .. man kann das mit nem lappen machen .. aber ICH will unbedingt nen hammer nehmen .. WIE geht das :)
Antworten

Zurück zu „Coding & Technik“