Guten Tag!
Ich habe folgende SQL Tabelle:
partid----memberid ----warid
20------------4------------2
35-----------20--------- --3
36----------- 6------------3
37------------3------------1
39-----------15------------1
Nun möchte ich alle memberid's ausgeben mit der höchsten warid
also 20 und 6.
Habe schon verzweifelt rumprobiert und gegoogelt bekomme es aber irgendwie nicht hinn.
Hoffe ihr könnt mir helfen!!!
Servus
Moin :)
das Feld "warid" ist dynamisch, kann also auch andere Werte haben, oder?
Wenn es nur eine Abfrage sein soll, ist das recht komplex. Die Tabelle muss mit sich selbst verknüpft werden...
SELECT v.memberid, v.warid, MAX( m.warid ) AS mx
FROM `tablename` AS v, `tablename` AS m
GROUP BY v.memberid
HAVING v.warid = mx
Vermutlich ist das bei grossen Tabellen aber recht serverlastig.
Besser ist es vermutlich mit 2 Abfragen zu arbeiten. Eine ermittelt mit MAX( warid ) den höchsten Wert in der Spalte, die nächste nimmt dann diesen ermittelten Wert als Bedingung um die entsprechenden memberid's auszulesen.
Ab MySQL 4.1 mit subselects =
ZitatSELECT * from table where warid = (SELECT MAX(warid) FROM table);
Alles was darunter ist, ist wie Andi schon sagt, mit 2 Abfragen einfacher zu realisieren =
1. Abfrage :
ZitatSELECT MAX(warid) FROM table
2. Abfrage
ZitatSELECt * FROM table where warid=[Ergebnis aus erster Abfrage]
MfG
Waaaaaaa....
an die subselects habe ich garnicht mehr gedacht, weil ich immernoch den alten mysql 3.x Kram in der Birne habe....
OK, vielen DANK!
Funktioniert einwandfrei!!!!