Re: nur einmaliges zählen

Hannes Streicher HStreicher at gmx.de
Di Jan 27 15:00:18 CET 2009


Guten Tag Uwe Driessen,

am Dienstag, 27. Januar 2009 um 14:43 schrieben Sie:
> Mal wieder ein Problem
> Ich möchte nur für die Einträge die in T2 sind die Menge an Einträgen in T1 zählen

> Problem die Custumer_id ist in beiden tabellen mehrfach vorhanden aber diese ist der Wert
> der benötigt wird.

> Ein 

> SELECT t1.customer_id, count(t1.customer_id)FROM op_databases_mysql t1
> group by t1.customer_id


> 20012 1 
> 20016 2 
> 20019 3 
> 20026 20 
> 20027 4 
> 20043 3 
> 20057 1 
> 20072 2 
> 20078 1 
> 20079 1 
> 20083 1 
> 20088 1 
> 20133 2 
> 20150 1 
> 20154 4 
> 20161 1 
> 20230 1 
> 20231 3 
> 20232 1 
> 20234 1 
> 20240 2 
> 20249 1 
> 20252 1 
> 20266 2 
> 20269 1 
> 20299 1

> Dieses Ergebnis möchte ich nun auf noch gültige Einträge beschränken und habe dafür ein
> join auf eine Tabelle die nur noch die aktuellen Domains enthält gemacht. Darin kann die
> customer_id auch mehrfach vorkommen und wodurch für jede customer_id in t2 die customer_id
> in t1 mehrfach gezählt wird.

> SELECT distinct t1.customer_id, count(t1.customer_id)
> FROM op_databases_mysql t1 join  diehl_domain  t2 
> where t1.customer_id = t2.customer_id 
> group by t2.customer_id;

> 20012 1 
> 20016 12 
> 20019 72 
> 20026 20 
> 20027 12 
> 20043 123 
> 20057 2 
> 20072 30 
> 20083 2 
> 20088 11 
> 20150 2 
> 20154 128 
> 20161 6 
> 20230 1 
> 20231 24 
> 20232 2 
> 20234 4 
> 20240 104 
> 20249 1 
> 20266 6 
> 20269 2 
> 20299 1

> wie kann ich das umgehen bzw. wo liegt der Fehler im select?


ungetestet

 SELECT  t1.customer_id, count(t1.customer_id)
 FROM op_databases_mysql t1
  where   exists
  ( select 1 from diehl_domain  t2 where  t1.customer_id =t2.customer_id  )
 group by t1.customer_id;


-- 
Mit freundlichen Grüssen
Hannes Streicher                            mailto:HStreicher at gmx.de