[SQL allgemein] SELECT ... immer nötig?

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

  • [SQL allgemein] SELECT ... immer nötig?

    Hallo,

    ich bräuchte kurz eine Bestätigung.

    Wenn ich eine sql_query habe wie z.B. folgende:
    PHP-Code:
    SELECT test FROM db WHERE test test2 
    Ich kann nun mit test2 vergleichen, aber im Ergebnis ist nur "test" als variable verfügbar, "test2" jedoch nicht.

    Das hatte mich am Anfang etwas irritiert, ist aber logisch.

    Nun weiter.
    Warum muss ich GROUP BY verwenden,
    wenn ich eine Aggregatfunktion benutze?
    Ich möchte, nein, ich brauche ja eigentlich keine GROUP BY funktion.
    Das ist mir in dem Fall total wurscht.

    Warum ist GROUP BY also nötig?
    Und nach was soll ich dann gruppieren wenn ich es garnicht vorhanbe bzw. es eigentlich egal ist?

    Einfach nach z.B. id oder so gruppieren?
    Könnte mir dann ja eigentlich irgendeine Spalte aussuchen, oder?

    Dankeschön

  • #2
    Du musst natürlich nur gruppieren, wenn du die Aggregatfunktion nur auf die Datensätze einer solchen Gruppe anwenden willst. Soll die Funktion über alle Datensätze laufen, lässt du die Gruppierung weg. Klassisches Beispiel:

    Code:
    select count(*) from foo;
    -> Anzahl aller Datensätze
    Code:
    select count(*) as c, name from foo group by name;
    -> Selektion der Namen und der Anzahl, wie oft ein Datensatz mit diesem Namen vorhanden ist. Wichtig hierbei ist noch anzumerken, dass MySQL auch Spalten in der Selektliste zulässt, nach denen keine Gruppierung stattfindet. Das ist aber allgemein nicht möglich und sollte auch in MySQL nicht verwendet werden.

    Kommentar


    • #3
      Aha.
      Ich habe leider gerade keine Möglichkeit auf eine SDK zuzugreifen und kann daher nicht testen,
      aber ich habe es so verstanden:

      PHP-Code:
      select count(*) from foo;
      // möglich 
      PHP-Code:
      select count(*), name from foo// Es gehlt Group by
      // nicht möglich 
      PHP-Code:
      select count(*), name from foo group by name;
      // möglich 
      PHP-Code:
      select count(*) as c from foo;
      // möglich 
      PHP-Code:
      select count(*) as cname from foo group by name//oder auch group by c;
      // möglich !? 
      Soweit richtig¿

      Kommentar


      • #4
        oder auch group by c;
        Das macht nicht viel Sinn und ist auch nicht möglich. Aber sonst sieht das gut aus.

        Kommentar


        • #5
          Original geschrieben von PHP-Desaster
          Das macht nicht viel Sinn und ist auch nicht möglich. Aber sonst sieht das gut aus.
          Ja, stimmt
          Danke

          Kommentar

          Lädt...
          X