Met456: Nach Name sortieren

Hi ich wollte über php aus meiner db die einträge nach namen sortieren so weit bin ich gekommen

<?php

$con = mysql_connect("localhost", "xxx", "xxx");
mysql_select_db("xxx", $con) or die (mysql_error());

$sql = "SELECT *
          FROM T\_game
         WHERE (ID >= '1' AND ID <= '15')
      GROUP BY Name
         LIMIT 0 , 20 ";

$result = mysql_query($sql, $con) or die (mysql_error());

if ($result)
  while ($row = mysql_fetch_array($result, MYSQL_NUM) ) {
        echo $row[0] . "<br />";
  }

?>

aber ich kriege nur die ID und nicht die name sortiert

  1. hi,

    $sql = "SELECT *
              FROM T\_game
             WHERE (ID >= '1' AND ID <= '15')
          GROUP BY Name
             LIMIT 0 , 20 ";

    aber ich kriege nur die ID und nicht die name sortiert

    Nee, damit bekommst du gar nix sortiert (sondern eine zufällige Reihenfolge).

    Für's Sortieren ist nicht GROUP BY, sondern ORDER BY verantwortlich.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. $sql = "SELECT *
                FROM T\_game
               WHERE (ID >= '1' AND ID <= '15')
            GROUP BY Name
               LIMIT 0 , 20 ";

      aber ich kriege nur die ID und nicht die name sortiert

      Nee, damit bekommst du gar nix sortiert (sondern eine zufällige Reihenfolge).

      Für's Sortieren ist nicht GROUP BY, sondern ORDER BY verantwortlich.

      Ganz so ist es ja nicht, Bruder:
      http://dev.mysql.com/doc/refman/5.1/de/select.html

      "Wenn Sie GROUP BY verwenden, werden die Ausgabedatensätze entsprechend den GROUP BY-Spalten sortiert, so als ob Sie eine ORDER BY-Klausel für dieselben Spalten angegeben hätten."

      1. hi,

        "Wenn Sie GROUP BY verwenden, werden die Ausgabedatensätze entsprechend den GROUP BY-Spalten sortiert, so als ob Sie eine ORDER BY-Klausel für dieselben Spalten angegeben hätten."

        War mir nicht bekannt, danke für den Hinweis.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hallo wahsaga,

          War mir nicht bekannt, danke für den Hinweis.

          Du zeigst wahre Größe,
          wow, wow ;)

          Gruß Gernot

      2. yo,

        "Wenn Sie GROUP BY verwenden, werden die Ausgabedatensätze entsprechend den GROUP BY-Spalten sortiert, so als ob Sie eine ORDER BY-Klausel für dieselben Spalten angegeben hätten."

        ich würde trotzdem expliziet ORDER BY benutzen, wie es wahsaga gesagt hat. zum einen macht es den code übersichtlicher und zum anderen wird nicht jedes dbms dir bei einem GROUP BY die ergebnisse in einer sortierten reihenfolge zurückliefern.

        Ilja

        1. "Wenn Sie GROUP BY verwenden, werden die Ausgabedatensätze entsprechend den GROUP BY-Spalten sortiert, so als ob Sie eine ORDER BY-Klausel für dieselben Spalten angegeben hätten."

          ich würde trotzdem expliziet ORDER BY benutzen, wie es wahsaga gesagt hat. zum einen macht es den code übersichtlicher und zum anderen wird nicht jedes dbms dir bei einem GROUP BY die ergebnisse in einer sortierten reihenfolge zurückliefern.

          Schon klar, bspw. MS SQL Server:
          http://msdn2.microsoft.com/en-us/library/ms177673.aspx
          "If the ORDER BY clause is not specified, groups returned by using the GROUP BY clause are not in any particular order. To specify a particular ordering of the data, we recommend that you always use the ORDER BY clause."

          Mal am Rande, GROUP BY ist u.a. auch kein guter "SELECT DISTINCT"-Ersatz und sollte üblicherweise immer zusammen mit Aggregatfunktionen verwendet werden.

          1. yo,

            Mal am Rande, GROUP BY ist u.a. auch kein guter "SELECT DISTINCT"-Ersatz und sollte üblicherweise immer zusammen mit Aggregatfunktionen verwendet werden.

            und worin siehst du den grossen unterschied ?

            Ilja

            1. Mal am Rande, GROUP BY ist u.a. auch kein guter "SELECT DISTINCT"-Ersatz und sollte üblicherweise immer zusammen mit Aggregatfunktionen verwendet werden.

              und worin siehst du den grossen unterschied ?

              Weils besser ist?

              1. yo,

                und worin siehst du den grossen unterschied ?
                Weils besser ist?

                das ist eine bewertung und kein unterschied, worauf basiert deine bewertung ?

                Ilja

                1. und worin siehst du den grossen unterschied ?
                  Weils besser ist?

                  das ist eine bewertung und kein unterschied, worauf basiert deine bewertung ?

                  Du machst es ja richtig mit Deinen "Warum"-"Warum"-Fragen nur irgendwann kommt man nur noch auf irgendwelche Prinzipien, auf die man verweisen kann als Antwort. Das ein Prinzip herhalten musste bei Deinem letzten "Warum?" dürfte also nunmehr klar sein.

                  Also, wir behaupten, dass bspw. ein "SELECT DISTINCT DF_1, DF_2 FROM DT_1 ORDER BY DF_1 ASC, DF_2 ASC" einfacher und klarer ist als ein "SELECT (ALL) DF_1, DF_2 FROM DT_1 GROUP BY DF_1, DF_2" mit demselben Ergebnis unter MySQL.

  2. Hi ich wollte über php aus meiner db die einträge nach namen sortieren so weit bin ich gekommen

    <?php

    $con = mysql_connect("localhost", "xxx", "xxx");
    mysql_select_db("xxx", $con) or die (mysql_error());

    $sql = "SELECT *
              FROM T\_game
             WHERE (ID >= '1' AND ID <= '15')
          Order BY Name
             LIMIT 0 , 20 ";

    $result = mysql_query($sql, $con) or die (mysql_error());

    if ($result)
      while ($row = mysql_fetch_array($result, MYSQL_NUM) ) {
            echo $row[0] . "<br />";
      }

    ?>

    aber ich kriege nur die ID und nicht die name sortiert

    <?php

    $con = mysql_connect("localhost", "xxx", "xxx");
    mysql_select_db("xxx", $con) or die (mysql_error());

    $sql = "SELECT *
              FROM T\_game
             WHERE (ID >= '1' AND ID <= '15')
          Order BY Name
             LIMIT 0 , 20 ";

    $result = mysql_query($sql, $con) or die (mysql_error());

    if ($result)
      while ($row = mysql_fetch_array($result, MYSQL_NUM) ) {
            echo $row[0] . "<br />";
      }

    ?>

    auch mit order by kriege ich die namen nicht angezeigt sindern ID

    1. Servus,

      zu Beginn: Fullquotes sind nicht so wirklich erwünscht .. der ganze Salm existiert ja schon mal.

      Wenn du natürlich _nur_ das 0. = 1. Element des $row Arrays ausgibst und selbiges eben _nur_ die ID ist, dann bekommst du zwangsweise auch nur die ID angezeigt.

      Gewöhne dir bitte auch an, die Spalten, die du "selektieren" willst, explizit (=ausdrücklich) nach SELECT anstelle des * anzugeben.

      Grüessli, Frank

    2. hi,

      zitiere bitte mal vernünftig, und nicht immer alles.

      auch mit order by kriege ich die namen nicht angezeigt sindern ID

      Dann ist es wohl gar kein Problem der Sortierung - sondern dir ist gar nicht bewusst, welche Spalten du in welcher Reihenfolge ausliest.

      Selbst Schuld, wenn du SELECT * schreibst - also das mal ändern.
      Und print_r($row) könnte dir etwas mehr Durchblick verschaffen, was du eigentlich bekommst.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }