Airis: Probleme mit Statement

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

  1. 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

    1. 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

      1. 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

        1. 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