Newbie: count und abfrage gleichzeitig

Datenbank: MySQL

Moin

Kann ich eine Abfrage machen und in dieser Abfrage gleichzeitig ein COUNT() auf eine fremde Tabelle?

Also irgendwie so:

SELECT a.COUNT(), b.username FROM a onlinelist, b users

  1. Hi,

    Kann ich eine Abfrage machen und in dieser Abfrage gleichzeitig ein COUNT() auf eine fremde Tabelle?

    ja. Du benötigst eine JOIN-Bedingung sowie eine Gruppierung.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. yo,

      ja. Du benötigst eine JOIN-Bedingung sowie eine Gruppierung.

      nein, er benötigt eine unterabfrage.

      SELECT b.username, (SELECT COUNT(*) from onlinelist) AS Anzahl
      FROM users b

      Ilja

      1. hola,

        SELECT b.username, (SELECT COUNT(*) from onlinelist) AS Anzahl
        FROM users b

        und was soll im das bringen? zu jeder Zeile aus users die Anzahl von Zeilen  aus der onlinelist zu bekommen?

        Ein Subselect ist hier nicht nötig (und wenn sollte man die Subquery schon verknüpfen ;-)

        Gruss,
        Seppel

        1. yo,

          und wenn sollte man die Subquery schon verknüpfen ;-)

          dann wäre es aber keine fremde tabelle mehr, so wie er es geschrieben hat, sondern eine verknüpfte.

          Ilja

  2. hola,

    SELECT a.COUNT(), b.username FROM a onlinelist, b users

    wie Cheatah schon geschrieben hat musst du die Tabellen mit einander verbinden und alles, was nicht aggregiert wird (count...), gruppieren.

    ich denke dir schwebt etwas in dieser Art vor:

      
    select count(*), b.username  
      from onlinelist a, users b  
     where a.userid = b.id  
     group by b.username  
    
    

    das würde dir die Anzahl der Tupel aus a bringen, die sich mit b verknüpfen lassen. Wie man unschwer deinem SQL-Versuch entnehmen kann, solltest du dich aber erst mal mehr mit SQL vertraut machen und zur Sicherheit immer als erstes das Ergebnis ohne count angucken - um zu sehen, ob du die Tabellen richtig verknüpft hast und kein karthesisches Produkt erzeugt hast ;-)

    Gruss,
    Seppel