Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Nur höchste "Versionen" abfragen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Nur höchste "Versionen" abfragen


 
deepmessage
11-02-2010, 18:09 
 
Hallo zusammen,

meine Tabelle sieht wie folgt aus:

|Feld|Typ|Null|Standard
|------
|//**id**//|int(11)|Nein|
|number|int(11)|Nein|
|version|int(11)|Nein|
|title|text|Nein|

Es werden darin Artikel mit einer bestimmten Nummer und verschiedenen Versionen gespeichert.

Nun möchte ich alle "neusten" Versionen eines Artikels mittels SELECT abfragen, d. h. zu jeder Nummer die "höchste Version".
Hat mir da jemand nen Tipp?

Gruß
Alex

 
AmicaNoctis
11-02-2010, 18:15 
 
Hallo,

das geht mit einem negativen Self Left Join, siehe MySQL :: MySQL 5.0 Reference Manual :: 3.6.4 The Rows Holding the Group-wise Maximum of a Certain Column (http://dev.mysql.com/doc/refman/5.0/en/example-maximum-column-group-row.html), das Beispiel ganz unten.

Edit: Kommando zurück, wenn ich es recht verstehe, reicht in deinem Fall auch ein
select max(version)
from TABELLE
group by number


Gruß,

Amica

 
deepmessage
11-02-2010, 18:35 
 
Hi Amica,

danke für Deine Antwort.
Ich wollte schon die kompletten Daten. So geht's aber:

SELECT * FROM `articles` s1 JOIN (SELECT number, MAX(version) AS version FROM `articles` GROUP BY number) AS s2 ON s1.number=s2.number AND s1.version=s2.version

Wenn's jemand kürzer weiß, bin ich für weitere Vorschläge offen ;-)


Gruß
Alex

 
AmicaNoctis
11-02-2010, 18:52 
 
OK, wenn du alles brauchst funktioniert es nur so, wie in dem Link beschrieben, also nicht mit max und group by. Deine Version ist unkorreliert, also in Ordnung, obwohl ich trotzdem die letzte Variante mit dem negativen Left Join bevorzuge.


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:21 Uhr.