Archiv verlassen und diese Seite im Standarddesign anzeigen : [MySQL] absteigendes sortieren von einer bestimmten Anzahl Datensätze
also mein problem ist:
ich habe eine mysql-tabelle die so aussieht
-----------------------------------
| datum | user_id | ex_id |
|(datetime)| (int) | (int) |
-----------------------------------
darin befinden sich in jedem datensatz die zeit wann jemand eine übung besucht hat, die id des users, der die übung besucht hat und die id der übung die er besucht hat.
jetzt muss ich daraus statistiken machen.
wie kann ich die anzahl der datensätze (mit einer bestimmten user_id) und diese user_id ausgeben lassen, alles sortiert nach der anzahl dieser datensätze absteigent.
und am liebsten wäre es mir wenn das nachher alles schön so in einem array ist (PHP):
$stats[x][y][user_id]
x läuft durch von 0 bis ... und dabei wird y immer kleiner denn das soll die anzahl der datensätze mit deiner bestimmten user_id sein.
<?php
echo "<table border=\"0\">\n<tr>\n";
echo "<td>Datum:</td>\n";
echo "<td>User:</td>\n";
echo "<td>Uebung:</td>\n</tr>\n";
$connect = "mysql_connect('$user','$pass','$db')";
mysql_select_db('$dbname','$connect');
$auslese = mysql_query("SELECT user_id FROM $tabelle");
while ('$userid = mysql_fetch_array($auslese)')
{
$auslesen = mysql_query("SELECT * FROM $tabelle WHERE userid='$userid' order by datum ASC);
$anzahl = mysql_num_rows($auslesen);
echo "<tr>\n<td colspan=\"3\">".$userid.", Anzahl der Übungen: ".$anzahl."</td>\n</tr>\n";
while ('$ausgabe = mysql_fetch_array($auslesen)')
{
$ausgabe['0'] -> $datum;
$ausgabe['1'] -> $user_id;
$ausgabe['2'] -> $ex_id;
echo "<tr>\n<td>".$datum."</td>\n";
echo "<td>".$user_id."</td>\n";
echo "<td>".$ex_id."</td>\n</tr>\n";
}
}
mysql_close;
echo "</table>";
?>
angaben ohne gewähr net getestet nix
sowas in der art ?? habs shcon lang nimmer gemacht
ohh mir fällt grad auf das zählen vorher fehlt. Naja wirst shcon drauf kommen *g*
ganz einfach:
SELECT count(*) as anzahl,user_id FROM `test` group by user_id
ich glaubs net. ich bin soooooo dooooof.
cano du bist mein gott. danke danke
ich könnt mir mal wieder kräftig in den arsch beißen:
<?php
$table_ids = mysql_query("select distinct user_id from ite_ex_visits;", $db);
$anzahl = 0;
while($anzahl < mysql_num_rows($table_ids))
{
$daten_id = mysql_fetch_array($table_ids, MYSQL_ASSOC);
$id{$anzahl} = (int)$daten_id[user_id]; //beim ersten durchlauf tuts dann nemme
$anzahl++;
}
$anzahl = 0;
while($anzahl < count($id))
{
$table_zahl = mysql_query("select count(*) as zahl from ite_ex_visits where user_id = \"".$id{$anzahl}."\";", $db);
$daten_zahl = mysql_fetch_array($table_zahl, MYSQL_ASSOC);
$table_name = mysql_query("select name from ite_users where id = \"".$id{$anzahl}."\";", $db);
$daten_name = mysql_fetch_array($table_name, MYSQL_ASSOC);
$stat[$anzahl][0] = $daten_name[name];
$stat[$anzahl][1] = $daten_zahl[zahl];
$anzahl++;
echo $stat[$anzahl][0]."(".$stat[$anzahl][1].")<br>";
}//ok $stat[...][0] = name des typs und $stat[...][1] = wieviele exs er gemacht hat, nur noch sortieren
/*
$anzahl = -1;
$zahl = 0;
while(count($stat) != 0)
{
$anzahl++;
if($anzahl > count($stat))
{
$anzahl = 0;
}
if(isset($stat[$anzahl]) && !(isset($max)))
{
$max = $stat[$anzahl];
}
else
{
break;
}
$i = 0;
while($i < count($stat))
{
if($max < $stat[$i][1])
{
unset($max);
}
$i++;
if($i == count($stat))
{
$statistics[$zahl] = $max;
unset($max);
}
}
}
$anzahl = 0;
while($anzahl > count($statistics))
{
echo $statistics[$anzahl]."<br>";
}
*/
?>
nix gut das da
vielleicht sollte ich mal gscheit mysql lernen
<edit>und ich könnt mir noch viel mehr in den arsch beißen wenn ich sehe dass ich immernoch zu blöd bin das syntaxs highlighting zu nutzen</edit>
//Kann ich auch nicht - Dann eben code - Tags ;)