[MySQL] DISTINCT mit ORDER

Ingo41

Mitglied
Hi! Meine DB-Table sieht so aus:
Code:
CREATE TABLE teuer (
   id int(3) AUTO_INCREMENT,
   verkaufer varchar(100),
   kaufer varchar(100),
   wert_taler int,
   wert_euro int,
   PRIMARY KEY (id)
   )
TYPE=MyISAM;

Es ist eine Sammlung von Verkäufen.
Um auch die besten Verkäufer anzeigen zu können, möchte ich, dass von den Verkäufern der Name, die Anzahl der Verkäufe, den Gesamt-Wert in € und den Gesamt-Wert in T angezeigt wird (was T ist, ist für euch völlig egal).
Leider funktioniert das ganze nur soweit, dass die Verkäufer nach den IDs angeordnet werden. Ich möchte aber nach dem Gesamt-€-Wert ordnen.
Vielen Dank
mfg
euer ingo

PHP:
$sql_1 = "SELECT DISTINCT(verkaufer) AS v FROM teuer ORDER BY wert_euro DESC";
$result_1 = mysql_query($sql_1) or die("<b>MySQL Error:</b> " . mysql_error());
$anzahl_1 = mysql_num_rows($result_1);
 
if ($anzahl_1 > 0) {
for ($ii=0; $ii<$anzahl_1; $ii++) {
$verkaufer = mysql_result($result_1, $ii, "v");
 
$sql_2 = "SELECT SUM(wert_euro) AS se, SUM(wert_taler) AS st FROM teuer WHERE verkaufer='$verkaufer'"; 
$result_2 = mysql_query($sql_2);
$array_2 = mysql_fetch_array($result_2);
$euro = $array_2["se"];
$taler = $array_2["st"];
$platz = $ii+1;
 
$sql_3 = "SELECT COUNT(verkaufer) AS anz FROM teuer WHERE verkaufer='$verkaufer'"; 
$result_3 = mysql_query($sql_3);
$array_3 = mysql_fetch_array($result_3);
$anz = $array_3["anz"];
 
$data1[]="<tr bgcolor='#008000' class='table1' align='center'>
	 <td width='30'>$platz.</td>
	 <td width='170' align='left'>&nbsp;$verkaufer</td>
	 <td width='80'>$anz</td>
	 <td width='75'>$euro</td>
	 <td width='75'>$taler</td>
</tr>";
}
 
Hi,

Warum packst du die 3 Selects nicht in eins?
Dann könntest du direkt nach sum(wert_euro) oder se sortieren.
Außerdem bin ich der Meinung, dass du dadurch auch die Performance verbessern würdest.
 
Sorry, komm da nicht drauf

wenn ich $sql_1 = "SELECT DISTINCT(verkaufer), SUM(wert_euro)..." habe ist DISTINCT() nicht mehr aktiv...

kann mir keiner helfen :(
 
Hi,

Was verstehst du unter "DISTINCT ist nicht aktiv"?


Mach am besten mal ein Beispiel, um das etwas zu veranschaulichen
Was steht in deinen Tabellen?
Was erwartest du?
Was kommt raus?
 
niggo hat gesagt.:
Hi,

Was verstehst du unter "DISTINCT ist nicht aktiv"?


Mach am besten mal ein Beispiel, um das etwas zu veranschaulichen
Was steht in deinen Tabellen?
Was erwartest du?
Was kommt raus?

ja wenn ich das mache werden mir wieder alle Verkäufer angezeigt

1 | Alli | ? | 66 | 100 |
2 | Rommy | ? | 30 | 75 |
3 | Alli | ? | 30 | 75 |

Jetzt soll das dastehen:

Beste Verkäufer:
Platz, Verkäufer, Anzahl der Verkäufe, Gesamtwert in T, Gesamtwert in €

1. Alli, 2, 96, 175
2. Rommy, 1, 30, 75

MfG
Euer
ingo
 
Arbeite doch mit GROUP BY:
Code:
SELECT
  verkaufer AS v,
  SUM(wert_euro) AS se,
  SUM(wert_taler) AS st,
  COUNT(verkaufer) AS anz
FROM teuer
GROUP BY verkaufer
ORDER BY se DESC
Gruß hpvw
 
Zuletzt bearbeitet:
hpvw hat gesagt.:
Arbeite doch mit GROUP BY:
Code:
SELECT
verkaufer AS v,
SUM (wert_euro) AS se,
SUM (wert_taler) AS st,
COUNT (verkaufer) AS anz
FROM teuer
GROUP BY verkaufer
ORDER BY se DESC
Gruß hpvw

#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '(wert_euro) AS se,
SUM (wert_taler) AS st,
COUNT (verkauf
 
Entferne die Leerzeichen zwischen den Funktionen und ihren Klammern. MySQL ist da etwas zickig. Ich habe es oben editiert.

Gruß hpvw
 
Zurück