php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 13.07.2010, 19:08  
Neuer Benutzer
 
Registriert seit: 13.07.2010
Beiträge: 3
PHP-Kenntnisse:
Anfänger
kamikaze befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] nur kleinstem wert einer person anzeigen mittels MIN?

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:
PHP-Code:
mysql_query("select person, min(wert) as wertMin, rang, distanz, ort from rangierung group by person"
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
kamikaze ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 13.07.2010, 19:15  
Erfahrener Benutzer
 
Registriert seit: 14.08.2008
Beiträge: 157
Hexe befindet sich auf einem aufstrebenden Ast
Standard

http://jan.kneschke.de/projects/mysql/groupwise-max
Hexe ist offline   Mit Zitat antworten
Alt 13.07.2010, 20:07  
thomas_w
Gast
 
Beiträge: n/a
Standard

Was die Spalte "person" in Deinem Beispiel enthält, habe ich nicht verstanden. Ich habe mal ein ähnliches Beispiel zusammen gestellt:

Code:
CREATE TABLE personen (
 person_id INT NOT NULL,
 wert INT NOT NULL,
 rang INT NOT NULL,
 distanz INT NOT NULL,
 ort_id INT NOT NULL
);

INSERT INTO personen VALUES
( 1, 130, 1, 2500, 12 ),
( 2, 135, 5, 2100, 13 ),
( 3, 140, 3, 2500, 12 ),
( 1, 230, 2, 2000, 14 ),
( 2, 175, 1, 2100, 15 ),
( 3, 240, 3, 2000, 14 );

SELECT p1.person_id, p1.wert, p1.rang, p1.distanz, p1.ort_id
  FROM personen p1
  JOIN ( SELECT p2.person_id, MIN(p2.wert) wert
           FROM personen p2
          GROUP BY p2.person_id
       ) p2
    ON p2.person_id = p1.person_id
   AND p2.wert = p1.wert
ORDER BY person_id;

+-----------+------+------+---------+--------+
| person_id | wert | rang | distanz | ort_id |
+-----------+------+------+---------+--------+
|         1 |  130 |    1 |    2500 |     12 |
|         2 |  135 |    5 |    2100 |     13 |
|         3 |  140 |    3 |    2500 |     12 |
+-----------+------+------+---------+--------+
3 rows in set (0.40 sec)

mysql>
Grüße
Thomas
  Mit Zitat antworten
Alt 13.07.2010, 20:42  
Neuer Benutzer
 
Registriert seit: 13.07.2010
Beiträge: 3
PHP-Kenntnisse:
Anfänger
kamikaze befindet sich auf einem aufstrebenden Ast
Standard

besten dank für eure antworten!
das mit der person ist schon eine id (dachte mit namen sei das einfacher zu erklären).
melde mich wieder ob ich es hinbekommen habe.
kamikaze ist offline   Mit Zitat antworten
Alt 13.07.2010, 22:07  
Neuer Benutzer
 
Registriert seit: 13.07.2010
Beiträge: 3
PHP-Kenntnisse:
Anfänger
kamikaze befindet sich auf einem aufstrebenden Ast
Standard

das scheint auf den ersten blick zu funktionieren... (bei 4500 datensätzen brauch ich aber noch einen zweiten blick).

ein problem war noch, dass die spalte "wert" manchmal auch leer resp. 0.00 war. das ist kein minimalwert sondern ganz einfach nicht definiert und somit auch nicht im ergebnis auftauchen durfte.

folgender massen gelöst:
PHP-Code:
SELECT p1.person_idp1.wertp1.rangp1.distanzp1.ort_id FROM personen p1 JOIN SELECT p2.person_idMIN(p2.wertwert FROM personen p2 where p2.wert !='0.00' GROUP BY p2.person_id p2 ON p2.person_id p1.person_id AND p2.wert p1.wert ORDER BY person_id 
kamikaze ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
DB: wenn Feld "alt" den wert "o" hatt, nicht anzeigen Crimson007 PHP Tipps 2010 10 15.04.2010 18:16
[Erledigt] jeden 5ten Wert aus db löschen Crowz PHP Tipps 2009 22 14.01.2010 16:07
Werte ohne Post anzeigen Extremefall PHP Tipps 2009 8 21.12.2009 19:49
XML, daten vergleichen, größeren wert anzeigen Creeping PHP Tipps 2009 0 18.06.2009 15:18
[Erledigt] Nur etwas anzeigen, wenn ein wert in einer Tabelle gespeichert ist T-boy1994 Datenbanken 5 04.11.2008 09:24
nach grösstem (unbekannten) Wert suchen lindner Datenbanken 2 20.08.2006 22:13
Query wert anzeigen frankys9 PHP Tipps 2006 9 25.04.2006 20:11
Tabelle mittels ID einen Wert zuweisen? Picard PHP Tipps 2006 8 22.03.2006 18:38
selektierten Wert aus Mysql in Auswahlliste anzeigen CIMM PHP Tipps 2006 5 23.02.2006 15:37
array verarbeitung (schlag auf den hinterkopf) PHP Tipps 2007 9 16.11.2005 11:37
kleinsten und größten wert ermitteln niffi PHP Tipps 2005 14 26.04.2005 12:42
mittels JS ein feld mit einem wert füllen HTML, Usability und Barrierefreiheit 1 24.10.2004 19:58
[Erledigt] Problem: per klick auf Button Wert erhöhen/verringern HTML, Usability und Barrierefreiheit 7 07.10.2004 08:31
Mysql tabellen wert in html anzeigen PHP Tipps 2004 20 29.09.2004 16:55
selektierter wert in select box anzeigen PHP Tipps 2004 6 30.08.2004 13:49

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/datenbanken/69684-erledigt-nur-kleinstem-wert-einer-person-anzeigen-mittels-min.html, satz mit dem kleinsten wert sql, sql datensätze vergleichen und kleinsten wert ausgeben, select nach kleinstem wert, group by kleinsten wert anzeihen, p2-wert, mehrere kleinste werte in sql ermitteln, datensatz mit dem kleinsten wert ermitteln sql, group by kleinsten wert anzeigen, sql nur den kleinsten anzeigen, sql datensatz mit dem niedrigsten wert, sql kleinster wert in spalte, mysql gruppieren kleinstes datum, group by datensatz mit kleinstem wert, sql such kleinster wert, nur kleinster wert im bericht anzeigen, sql kleinsten wert ausgeben, mysql nur daten einer gruppe mit kleinstem wert, personanzeigen, sql von groupby mit kleinstem wert

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:31 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum