yo,
Ich hatte ja extra geschrieben "vereinfacht dargestellt". Natürlich wird in der tatsächlich vorhandenen Tabelle nicht mit Namen sondern mit internen Usernummern gearbeitet ... wobei das aber für meine Problemstellung nebensächlich ist.
ahh ok, das ist gut so. bleibt noch das problem, dass man eine mail nur an einen schicken kann und nicht an mehrere, aber egal.
Meiner Erfahrung nach erledigt MySQL das deutlich schneller als PHP. Denn wenn ich zwei Abfragen mache bei z.B. 20.000 Maileinträgen in der DB, dann müsste ich ja danach 20.000 mal eine Schleife durchlaufen um in PHP (oder auch Perl) die Ergebnisse zusammenzuführen.
datenbank sind dafür auch optimert.d as porblem ist aber, dass unterabfragen selbst für dbms sehr unperformant sind, weil die unterabfragen jedesmal neu ausgeführt werden, für jeden datensatz der eigentlichen abfrage. ich würde vielleicht beides mal versuchen, zwei abfragen stelen und sie auf anwenderprogramm ebene addieren und eine unterabfrage, um zu sehen, was schneller geht. ein anderes problem ist noch, dass nicht jedes dbms unterabfragen ünterstützt, bzw. nicht in jeder version.
aber lös einfach dein union auf und mache eine unterabfrage draus. wie genau die syntax aussieht, kann ich out of the head nicht sagen, probieren und nachschauen. aber vom sinn her in etwa so.
SELECT von AS benutzer, count(*) +
(SELECT count(*)FROM tabelle GROUP BY an) AS anzahl
FROM tabelle
GROUP BY von
vielleicht fällt mir auch der join ein, mal sehen.
Ilja
Ilja