Probleme mit Statement
Airis
- php
Hallo Zusammen,
ich bin neu hier und beschäftige mich erst seit einiger Zeit mit PHP.
Bei meinem Statement:
<?php
$abfrage ="SELECT count(nickname) AS anzahl, nickname
FROM wait GROUP BY nickname
HAVING nickname='".$_SESSION["nickname"]."'
" OR die(mysql_error());
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo $row->anzahl;
}
?>
möchte ich gerne folgende Ergänzung machen:
Unterscheiden welche "dauer" angegeben wurde bzw. wenn "anzahl > =1 wieviel "anzahl" hat die gleiche "dauer".
Ergebnis z.B.: "anzahl" "dauer"
2 1
3 2
Ist dies im Statement umzusetzen?
Airis
Hallo Airis,
ich bin neu hier und beschäftige mich erst seit einiger Zeit mit PHP.
Hat Deine Frage etwas mit PHP zu tun?
Dein Problem ist ein reines SQL-Problem. Dass Du PHP als Datenbank-Client
nutzt, ist in diesem Zusammenhang zweitrangig.
Bei meinem Statement:
SELECT
count(nickname) AS anzahl,
nickname
FROM wait
GROUP BY nickname
HAVING nickname = 'Airis'
leicht editiert ;-)
möchte ich gerne folgende Ergänzung machen:
Unterscheiden welche "dauer" angegeben wurde bzw. wenn "anzahl > =1 wieviel "anzahl" hat die gleiche "dauer".
Ergebnis z.B.: "anzahl" "dauer"
2 1
3 2
Nicht eher
anzahl | nickname | dauer
-------------------------
2 | Airis | 1
3 | Airis | 2
Ist dies im Statement umzusetzen?
Füge die Spalte dauer hinzu und gruppiere nach dieser.
Sortiere nach Gusto, z.B. nach dauer aufsteigend
Setzt natürlich voraus, dass in Tabelle wait die Spalte dauer existiert.
Das SQL-Statement solltest Du problemlos hinkriegen.
Falls nicht, bitte wieder nachfragen.
Freundliche Grüsse,
Vinzenz
Hallo Vincenz,
besten Dank für Deine Antwort, auch wenn es im falschen Forum war.
Ich habe mein Statement jetzt folgendermaßen abgewandelt:
$abfrage ="SELECT count(nickname) AS anzahl, nickname, dauer FROM wait GROUP BY dauer HAVING nickname='".$_SESSION["nickname"]."' " OR die(mysql_error());
Es erfolgt allerdings nun die kompl. Ausgabe von Allem ohne Selection vom Session-Nickname.
Kannst Du mir sagen, wie ich das ändern kann?
Airis
Hallo Airis,
besten Dank für Deine Antwort, auch wenn es im falschen Forum war.
Nein, kein falsches Forum, denn hier gibt es genau eines.
Nur ein falscher Themenbereich - oder auch eben nicht (s.u.).
Ich hatte doch glatt vergessen, es zu korrigieren :-(
Ich habe mein Statement jetzt folgendermaßen abgewandelt:
$abfrage ="SELECT count(nickname) AS anzahl, nickname, dauer FROM wait GROUP BY dauer HAVING nickname='".$_SESSION["nickname"]."' " OR die(mysql_error());
Versuche es mit:
SELECT
count(nickname) AS anzahl,
nickname,
dauer
FROM wait
GROUP BY nickname, dauer
HAVING nickname = 'Airis' /* bzw. was sonst in $_SESSION["nickname"] steht. */
auch wenn MySQL in solchen Abfragen auch Spalten ohne Aggregatsfunktionen zuläßt.
Es erfolgt allerdings nun die kompl. Ausgabe von Allem ohne Selection vom Session-Nickname.
Kannst Du mir sagen, wie ich das ändern kann?
Vielleicht doch ein PHP-Problem?
<?php
$abfrage ="SELECT count(nickname) AS anzahl, nickname
FROM wait GROUP BY nickname
HAVING nickname='".$_SESSION["nickname"]."'
hier als Debug-Ausgabe mal ein
echo $abfrage;
einfügen, damit Du überprüfen kannst, wie das von PHP generierte
SQL-Statement aussieht.
oh je, oh ja:
die folgende Zeile
" OR die(mysql_error());
$ergebnis = mysql_query($abfrage);
gehört hier angefügt:
$ergebnis = mysql_query($abfrage) or die (mysql_error());
while($row = mysql_fetch_object($ergebnis))
{
echo $row->anzahl;
}
?>
Freundliche Grüsse,
Vinzenz
Hallo Vinzenz,
besten Dank für Deine umfang- und lehrreiche Hilfe.
Ich habe alles so umgesetzt, im Moment kommt zwar keine Ausgabe, aber ich denke das schaffe ich alleine.
Nochmals herlichen Dank
Airis