Frage zu einer SQL Abfrage

Begonnen von David555, 23 September 2006, 09:25:24

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 2 Gäste betrachten dieses Thema.

David555

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
Wer aufräumt ist zu faul zum suchen!

Andi

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.
schön´s Grüssle, Andi

jubilee

#2
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

Andi

Waaaaaaa....

an die subselects habe ich garnicht mehr gedacht, weil ich immernoch den alten mysql 3.x Kram in der Birne habe....
schön´s Grüssle, Andi

David555

OK, vielen DANK!
Funktioniert einwandfrei!!!!
Wer aufräumt ist zu faul zum suchen!