hallo zusammen
aufgabenstellung:
ich möchte aus einer mysql-tabelle mit personen, die alle mehrmals darin vorkommen, nur den datensatz mit dem kleinsten wert anzuzeigen.
Tabelle:
+-------+------+-----+--------+------+
| person | wert | rang | distanz | ort_id |
+-------+------+-----+--------+------+
| markus (1) | 130 | 1 | 2500 | 12 |
| peter (2) | 135 | 5 | 2100 | 13 |
| franzi (3) | 140 | 3 | 2500 | 12 |
| markus (1) | 230 | 2 | 2000 | 14 |
| peter (2) | 175 | 1 | 2100 | 15 |
| franzi (3) | 240 | 3 | 2000 | 14 |
+-------+------+-----+--------+------+
Soll-Resultat:
+-------+------+-----+--------+------+
| person | wert | rang | distanz | ort_id |
+-------+------+-----+--------+------+
| markus (1) | 130 | 1 | 2500 | 12 |
| franzi (3) | 140 | 3 | 2500 | 12 |
| peter (2) | 135 | 5 | 2100 | 13 |
+-------+------+-----+--------+------+
als lösung dachte ich, dass man das mit "min" und "group by" machen kann.
wichtig ist aber, dass ich neben der spalte "wert" auch die daten der anderen spalten benötige. und genau da ist das problem.
meine abfrage:
das liefert mir zwar die person nur 1x und auch der "wert" stimmt (der kleinste), aber bei alle anderen spalten werden nicht die des entsprechenden datensatzes angezeigt sondern irgend ein anderer:
Ist-Resultat (falsch):
+-------+------+-----+--------+------+
| person | wert | rang | distanz | ort_id |
+-------+------+-----+--------+------+
| markus (1) | 130 | 2 | 2000 | 14 |
| franzi (3) | 140 | 3 | 2500 | 12 |
| peter (2) | 135 | 1 | 2100 | 15 |
+-------+------+-----+--------+------+
wo lieft das problem? ist "min" überhaupt der richtige ansatz?
danke für eure hilfe
aufgabenstellung:
ich möchte aus einer mysql-tabelle mit personen, die alle mehrmals darin vorkommen, nur den datensatz mit dem kleinsten wert anzuzeigen.
Tabelle:
+-------+------+-----+--------+------+
| person | wert | rang | distanz | ort_id |
+-------+------+-----+--------+------+
| markus (1) | 130 | 1 | 2500 | 12 |
| peter (2) | 135 | 5 | 2100 | 13 |
| franzi (3) | 140 | 3 | 2500 | 12 |
| markus (1) | 230 | 2 | 2000 | 14 |
| peter (2) | 175 | 1 | 2100 | 15 |
| franzi (3) | 240 | 3 | 2000 | 14 |
+-------+------+-----+--------+------+
Soll-Resultat:
+-------+------+-----+--------+------+
| person | wert | rang | distanz | ort_id |
+-------+------+-----+--------+------+
| markus (1) | 130 | 1 | 2500 | 12 |
| franzi (3) | 140 | 3 | 2500 | 12 |
| peter (2) | 135 | 5 | 2100 | 13 |
+-------+------+-----+--------+------+
als lösung dachte ich, dass man das mit "min" und "group by" machen kann.
wichtig ist aber, dass ich neben der spalte "wert" auch die daten der anderen spalten benötige. und genau da ist das problem.
meine abfrage:
PHP-Code:
mysql_query("select person, min(wert) as wertMin, rang, distanz, ort from rangierung group by person")
Ist-Resultat (falsch):
+-------+------+-----+--------+------+
| person | wert | rang | distanz | ort_id |
+-------+------+-----+--------+------+
| markus (1) | 130 | 2 | 2000 | 14 |
| franzi (3) | 140 | 3 | 2500 | 12 |
| peter (2) | 135 | 1 | 2100 | 15 |
+-------+------+-----+--------+------+
wo lieft das problem? ist "min" überhaupt der richtige ansatz?
danke für eure hilfe
Kommentar