muenzchen: (MySQL) Mehrere COUNT() in einer Abfrage?

Hallo!

Ich habe folgende Tabelle:

main_ID | ID
-------------
 2      | 6
 2      | 7
 2      | 6
 2      | 6
 4      | 6
 3      | 7
 2      | 7
 2      | 6

Nun möchte ich alle Datensätze mit der main_ID='2' abfragen und abzählen, wie oft in der Abfrage die einzelnen IDs vorkommen. In dem Fall also wie oft 6 und wie oft 7 vorkommen.
Ich habe beim besten Willen nicht den Hauch einer Idee.

Hoffe ihr könnt mir helfen.

MfG, muenzchen

  1. Halihallo muenzchen

    Nun möchte ich alle Datensätze mit der main_ID='2' abfragen und abzählen, wie oft in der Abfrage die einzelnen IDs vorkommen. In dem Fall also wie oft 6 und wie oft 7 vorkommen.
    Ich habe beim besten Willen nicht den Hauch einer Idee.

    Na, wie du auf main_ID=2 einschränken kannst, ist wohl klar (WHERE) und jetzt
    interessiert dich, wieviele 7-ner und 6-er vorkommen? - Nun, dann gruppiere (GROUP BY)
    sie zusammen und verwende die Agregatsfunktion COUNT...

    Viele Grüsse

    Philipp

    1. Halihallo muenzchen

      Nun möchte ich alle Datensätze mit der main_ID='2' abfragen und abzählen, wie oft in der Abfrage die einzelnen IDs vorkommen. In dem Fall also wie oft 6 und wie oft 7 vorkommen.
      Ich habe beim besten Willen nicht den Hauch einer Idee.

      Na, wie du auf main_ID=2 einschränken kannst, ist wohl klar (WHERE) und jetzt
      interessiert dich, wieviele 7-ner und 6-er vorkommen? - Nun, dann gruppiere (GROUP BY)
      sie zusammen und verwende die Agregatsfunktion COUNT...

      Viele Grüsse

      Philipp

      Sorry, aber so gut bin ich noch nicht, dass ich das verstehe.
      Ich kanns mir bis zum GROUP BY gut vorstellen, aber wie das dann mit COUNT funktionieren soll, das ich die Anzahl der 6 und 7 bekomme, weiß ich wirklich nicht. Wie soll COUNT die denn unterscheiden können?

      1. Halihallo muenzchen

        Sorry, aber so gut bin ich noch nicht, dass ich das verstehe.

        Vielleicht habe ich's nicht. Ich denke, du willst folgendes:

        main_ID | ID

        2      | 6
        2      | 7
        2      | 6
        2      | 6
        4      | 6
        3      | 7
        2      | 7
        2      | 6

        dann nur die 2-er main_ID's

        main_ID | ID

        2      | 6
        2      | 7
        2      | 6
        2      | 6
        2      | 7
        2      | 6

        und dann die Anzahl aller 6-er und 7-er ID's

        ID      | COUNT

        6      | 4
        7      | 2

        ? - So richtig? - Denn dann...

        Ich kanns mir bis zum GROUP BY gut vorstellen, aber wie das dann mit COUNT funktionieren soll, das ich die Anzahl der 6 und 7 bekomme, weiß ich wirklich nicht. Wie soll COUNT die denn unterscheiden können?

        ... ist es ganz einfach: Du Gruppierst nach ID ( GROUP BY ID ) und gibst dir dann nur
        ID, COUNT(*) aus. Durch GROUP BY ID werden alle gleichen ID's zusammengezogen und man
        erhält über COUNT(*) die Anzahl zusammengezogener "Zeilen", in deinem Falle die Anzahl
        an gleichen ID's...

        SELECT ID, COUNT(*)
           FROM tabelle
           WHERE main_ID='2'
           GROUP BY ID
           ORDER BY ID DESC

        sollte das obengenannte SQL-ifizieren.

        Viele Grüsse

        Philipp

        1. Ich denke, jetzt hab ichs kapiert, danke!

          Ich werds mal ausprobieren.