Veröffentlicht 25. Februar 200619 j Ich habe folgenden code: function sort_parks($current_year) { $sql = "SELECT userid, nickname, age, wohnort, name FROM cbook_users WHERE online='1';"; $result = mysql_query($sql) OR die(mysql_error()); if(mysql_num_rows($result)) { $i = "1"; while($row = mysql_fetch_assoc($result)) { $sql_p = "SELECT parkid FROM cbook_besuch WHERE jahr='".addslashes(htmlspecialchars($current_year))."' AND userid='".addslashes(htmlspecialchars($row['userid']))."' GROUP BY parkid;"; $result_p = mysql_query($sql_p) OR die(mysql_error()); if(mysql_num_rows($result_p)) { $daten_p = array(); while($row_p = mysql_fetch_assoc($result_p)) { $daten_p[] = $row_p['parkid']; } $parks = count($daten_p); } else { $parks = "0"; } if($parks > 0) { echo('<tr>'); echo("<td width=\"25\">".$i.".</td>"); echo("<td width=\"130\"><a href=\"./page1.php?userid=".$_GET['userid']."&showid=".$row['userid']."&jahr=".$current_year."&page=1\">"); if(isset($_SESSION['ID']) && $_SESSION['ID'] == $row['userid'] && $_GET['userid'] == $row['userid']) { echo("<font color=\"#FF0000\"><b>".$row['nickname']."</b></font>"); } else { echo($row['nickname']); } echo("</a></td><td>".$row['name']."</td><td>".$row['age']."</td><td>".$row['wohnort']."</td>"); echo('<td>'); echo($parks); echo('</td>'); echo('</tr>'); $i++; } } } }[/PHP] Diese Funktion ist eingebettet in eine Tabelle... mit ihr soll man alle User nach der Anzahl besuchter Parks sortieren können. Die derzeitige Ausgabe sieht ungefähr so aus: 1. Morfois 4 2. Noel 6 3. test 3 Problem hierbei: wie lasse ich den User mit den meisten besuchten Parks in der Liste oben stehen? Für Vorschläge währe ich sehr dankbar! Viele Grüße Morfois P.S. $current_year ist immer das aktuelle Jahr, dementsprechent derzeit 2006 )
26. Februar 200619 j ^^ na klasse! wenns so einfach währe, würde ich mich bestimmt ned an euch wenden :-)
26. Februar 200619 j SELECT userid.book_users, nickname.book_users, count(park_id.cbook_besuch) as zaehler FROM book_users, cbook_besuch WHERE online.book_users='1' AND userid.book_users = userid.cbook_besuch AND jahr .... GROUP BY userid.book_users ORDER BY zaehler DESC [/PHP] so vielleicht ?
26. Februar 200619 j Dankeschöööön, funktioniert super! ^^ Ebenfalls funktionsfähig ist diese Lösung: SELECT count( a.userid ) AS anzahl, a.Jahr, a.userid, nickname, age, wohnort, name FROM cbook_besuch a RIGHT JOIN cbook_users b ON a.userid = b.userid WHERE jahr =2006 GROUP BY userid ORDER BY anzahl DESC Hierbei nochmal vielen Dank an Schiller256!
26. Februar 200619 j hm.... nun haben ja ein paar user einen park 2 mal besucht. also zum Beispiel: Noel war 2 mal im Europa-Park Morfois war ein mal im Europa-Park und ein mal im Phantasialand dann soll das ergebnis so aussehen: Morfois 2 Noel 1
26. Februar 200619 j SELECT userid.book_users, nickname.book_users, count(DISTINCT park_id.cbook_besuch, userid.cbook_besuch) as zaehler FROM book_users, cbook_besuch WHERE online.book_users='1' AND userid.book_users = userid.cbook_besuch AND jahr .... GROUP BY userid.book_users ORDER BY zaehler DESC [/PHP]
26. Februar 200619 j hm... wie sage ich ihm denn dann hierbei, das er die zwei "zaehler" zusammenaddieren soll??? SELECT cbook_users.userid, cbook_users.name, cbook_users.nickname, cbook_users.age, cbook_users.wohnort, count( DISTINCT cbook_kirmes.kirmesid, cbook_kirmes.userid ) AS zaehler FROM cbook_users, cbook_kirmes WHERE cbook_users.online = '1' AND cbook_users.userid = cbook_kirmes.userid AND jahr = '2006' GROUP BY cbook_users.userid UNION SELECT cbook_users.userid, cbook_users.name, cbook_users.nickname, cbook_users.age, cbook_users.wohnort, count( DISTINCT cbook_ride.rideid, cbook_ride.userid ) AS zaehler FROM cbook_users, cbook_ride WHERE cbook_users.online = '1' AND cbook_users.userid = cbook_ride.userid AND jahr = '2006' GROUP BY cbook_users.userid ORDER BY zaehler DESC[/PHP]
26. Februar 200619 j im prinzip das selbe wie oben, nur das es hier um insgesammt 3 tabellen geht. würde man beide SELECTS seperat ausführen und per PHP die zaehler addieren dann währe dies mein ergebnis, nach dem ich sortieren will!
27. Februar 200619 j ich möchte also quasi die anzahl der einträge der tabelle cbook_ride aller user, welche online='1' sind mit denen der tabelle cbook_kirmes addieren, jedoch nicht die wirkliche anzahl, sondern die anzahl der gefahrenen bahnen, d.h. 2 mal eine bahn gefahren bedeutet für den user nicht fahrten == 2 sondern anzahl gefahrener bahnen == 1... plus dann natürlich die anzahl der tabelle cbook_kirmes. Und danach will ich dann anzahl DESC sortieren! fertig :-)
27. Februar 200619 j würde man beide SELECTS seperat ausführen und per PHP die zaehler addieren dann währe dies mein ergebnis, nach dem ich sortieren will! dann mach das so, was spricht dagegen ? andere Lösungen sehe ich nicht
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.