Kalle_B: Mehrere COUNT() in einer einzigen SQL-Abfrage

Beitrag lesen

Hallo,

wollte euch fragen, ob wer weiß ob man in einer einzigen SQL-Abfrage mehrere COUNT() einbauen kann?

Ja, du musst ggf. für jeden count eine eigene Tabelle abfragen. Ich sende dir mal einen Codeschnippsel:

$q = "
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      # KONTAKTWUENSCHE, KONTAKTBUCHUNGEN
      #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      SELECT
       per1.owner_id

#count(DISTINCT kon1.gruppen_id)    kon_anz_grp
      ,COUNT(DISTINCT CONCAT( CAST(kon1.gruppen_id AS CHAR), '_',
                              CAST(kon1.aussteller_id AS CHAR))) kon_anz_grp

#count(DISTINCT kon2.gruppen_id)    kon_gebu_grp
      ,COUNT(DISTINCT CONCAT( CAST(kon2.gruppen_id AS CHAR), '_',
                              CAST(kon2.aussteller_id AS CHAR))) kon_gebu_grp

#count(kon3.besucher_id)   kon_anz_einzel
      ,COUNT(DISTINCT CONCAT( CAST(kon3.besucher_id AS CHAR), '_',
                              CAST(kon3.aussteller_id AS CHAR))) kon_anz_einzel

#count(DISTINCT kon4.besucher_id)   kon_gebu_einzel
      ,COUNT(DISTINCT CONCAT( CAST(kon4.besucher_id AS CHAR), '_',
                              CAST(kon4.aussteller_id AS CHAR))) kon_gebu_einzel

FROM      ".$db[0]['personen']." AS per1

# WUENSCHE VON BESUCHERGRUPPEN
      LEFT JOIN ".$db[0]['kontakte']." AS kon1
      ON        kon1.aussteller_id=per1.id AND ( kon1.prio_1=1 OR kon1.prio_2=1 ) AND kon1.gruppen_id>0
      # TERMINE VON BESUCHERGRUPPEN
      LEFT JOIN ".$db[0]['kontakte']." AS kon2
      ON        kon2.id=kon1.id AND kon2.slot_nr>0

# WUENSCHE VON EINZELBESUCHERN
      LEFT JOIN ".$db[0]['kontakte']." AS kon3
      ON        kon3.aussteller_id=per1.id AND ( kon3.prio_1=1 OR kon3.prio_2=1 ) AND kon3.gruppen_id=0
      # TERMINE VON EINZELBESUCHERN
      LEFT JOIN ".$db[0]['kontakte']." AS kon4
      ON        kon4.id=kon3.id AND kon4.slot_nr>0

WHERE     per1.owner_id=".$owner_id." AND per1.adr_kz=1 AND per1.loe_kz=0
      GROUP BY  per1.owner_id
      ";

MfG Kalle