Einzelnen Beitrag anzeigen
  #1  
Alt 08.09.2008, 17:56:00
ikkez ikkez ist offline
Anfänger
 
Registriert seit: Sep 2008
Alter: 38
Beiträge: 2
Query SUBSELECT Umschreiben

Hallo auch...

ich bin hier schon den ganzen Tag dabei dran und bin langsam am verzweifeln :-\
Ich hab hier eine Webapplication die bereits fertig ist, aber für MySQL 5.x > gebaut wurde, nun läuft sie aber auf nem alten MySQL 4.0.27 und einige Querys funktionieren nicht mehr.

so auch dieser:

SELECT * FROM events WHERE id IN (SELECT MAX(id) AS id FROM events GROUP BY number) ORDER BY startdate, starttime

er gibt mir errors aus und jeglicher Versuch diesen Query umzuschreiben sind bislang fehlgeschlagen.

Mit nem self join gings irgendwie nicht so wirklich und wenn ich normal diesen benutze: SELECT title, MAX(id) AS id FROM events GROUP BY number sind die titel falsch zugeordnet zu den IDs.
Nun hatte ich versucht es anders umzuschreiben:

Zitat:
From MySQL Reference Manual for version 4.0.15......

You can often rewrite the query without a subquery:
SELECT * FROM table1 WHERE id IN (SELECT id FROM table2);

This can be rewritten as:
SELECT table1.* FROM table1,table2 WHERE table1.id=table2.id;
aber bei der variante weiß ich echt nicht wo ich mit meinem group und max hin soll. das komm ich nämlich auch nicht weiter an die lösung als meine variante mit den falschen zuordnungen.

die tabelle sieht etwa so aus:

id # nummer # version # titel
1 # 1 # 1 # bla
2 # 1 # 2 # blaasd
3 # 1 # 3 # blakeks
4 # 2 # 1 # foo
5 # 2 # 2 # foobar

mein query soll mir dies liefern:


3 # 1 # 3 # blakeks
5 # 2 # 2 # foobar

also gruppiert nach nummer, und davon die höchste versionsnummer. wenn ich das normal mit max(version) group by nummer mache, stimmt der text nicht, der ist dann falsch zugeordnet.

kann jemand helfen? wäre super
Mit Zitat antworten