Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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 :o)

Geschrieben


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 ?

Geschrieben

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!

Geschrieben

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

Geschrieben

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]

Geschrieben

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]

Geschrieben

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!

Geschrieben

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 :-)

Geschrieben

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

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...