GROUP BY - erster Wert als Standardwert?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • GROUP BY - erster Wert als Standardwert?

    Hallo,

    ich habe eine SQL-Tabelle in der sich verschiedene Adressen befinden. Die Ausgabe dieser Adressen erfolgt unter anderem auch nach Ländern sortiert. Die Länder werden mittels GROUP BY in ein Select-Feld geschrieben. Der User wählt dann ein Land aus (z. B. Deutschland) und bekommt alle Adresseinträge zu diesem Land ausgegeben.

    Wenn diese PHP-Seite vom User nun erstmalig aufgerufen wird, dann wird per GET noch kein Land übergeben und es soll automatisch das Land ausgewählt werden, welchen in der GROUP BY List an der ersten Stelle steht.

    Bisher habe ich das immer manuell eingetragen (in diesem Bsp. "Belgien"), was sicher nicht die eleganteste Lösung ist.

    PHP-Code:
    $selection = isset($_GET["land"]) ? $_GET["land"] : "Belgien"
    Gibt es eine Möglichkeit, automatisch den ersten Wert der GROUP BY Abfrage zu ermitteln und als Standardwert zu setzen?

  • #2
    Findet die Abfrage erst statt,
    a) nachdem das Fomular (Select-Feld) abgesendet wurde, oder
    b) findet sie immer statt?

    bei

    a) Zusätzliche Abfrage an die Datenbank senden.

    b) Erst die Abfrage ausführen und DANACH das Select-Feld bauen.

    Kommentar


    • #3
      Die Abfrage findet immer statt, also b). Deinen Ausführungen kann ich allerdings noch nicht so ganz folgen.

      Meine Abfragen sehen wie folgt aus:

      1. Abfrage der Adressen zu der Auswahl des Landes durch den User:

      PHP-Code:
      $selection = isset($_GET["land"]) ? $_GET["land"] : "Belgien";
      $query "SELECT name, land FROM table WHERE land LIKE '$selection%' ORDER BY name ASC"
      2. GROUP_BY Abfrage der Länder mit Ausgabe im Select-Feld:

      PHP-Code:
      $query "SELECT name, land FROM table GROUP BY land";
      $result mysql_query($query) or die("Anfrage fehlgeschlagen: " mysql_error()); 
      <
      select name="land" >
      while (
      $row mysql_fetch_array($resultMYSQL_ASSOC))
      {
      echo 
      '<option value='.$row["land"].'>'.$row["land"].'</option>';
      }; 
      </
      select

      Kommentar


      • #4
        Und wo ist jetzt dein Problem, dir beim Durchlaufen der Abfrage-Ergebnisse einfach den ersten Wert zu merken?
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Sorry, aber ich stand eben etwas auf dem Schlauch.

          Ich habe jetzt die erste Abfrage um eine weitere Abfrage erweitert und es sieht nun wie folgt aus:

          PHP-Code:
          $result mysql_query("SELECT land FROM table GROUP BY land");
          $array mysql_fetch_array($result);
          $selection = isset($_GET["land"]) ? $_GET["land"] : "$array[0]";
          $query "SELECT name, land FROM table WHERE land LIKE '$selection%' ORDER BY name ASC"
          Ich hoffe, das ist so eine anwendbare bzw. korrekte Lösung. Funktionieren tut es auf jeden Fall so, wie ich es mir vorgestellt habe.

          Verbesserungsvorschläge sind aber gerne willkommen.

          Kommentar


          • #6
            Ist zwar nicht ansatzweise das, was dir vorgeschlagen wurde, aber das kommt dann mit Vorschlag a) überein.

            Kommentar

            Lädt...
            X