Mysql, zusammenzählen über 2 Tabellen
Noah (nicht der aus der Bibel)
- datenbank
Ich habe zwei Tabellen in der ersten stehen die Hauptdaten:
id ! state
---------------
1 ! Deutschland
2 ! Österreich
3 ! Schweiz
in der zweiten die Zuordnungen zu tabelle 1
to ! city
----------------
1 ! München
1 ! Hamburg
1 ! Berlin
1 ! Nürnberg
2 ! Wien
2 ! Salzburg
Nun versuche ich über die gleiche select Abfrage auch noch die Anzahl der einzelnen Städten (tabelle2) zu den jeweiliegn Ländern aus der (tabelle1) zu schaffen.
Im Augenblick mache ich es so, aber es müsste auch über eine einzige SELECT Abfrage zu machen sein:
$sql = "select id from tabelle1";
$result = mysql_query($sql);
while ($ausgabe = mysql_fetch_object($result))
{
$sql = "SELECT id FROM tabelle2 WHERE to=1
$result2 = mysql_query($sql);
$ergebnis = mysql_num_rows ( $result2);
echo 'Anzahl:'.$ergebnis.'<br>';
}
Noah
Hi,
du musst nach Ländern gruppieren und dann die Anzahl herausfinden. Also etwa so:
SELECT land.state, COUNT(stadt.city) AS anzahl_pro_land FROM land LEFT JOIN stadt GROUP BY land.state
Ich habe das jetzt nicht getestet, aber die Schlüsselworte sollten eigentlich stimmen.
Gruß
Alex
moin,
gruppierungen würde ich hier nicht einsetzen, das wäre für mich der falsche weg, besser sind wie oftmals korrelierte unterabfragen.
SELECT t1.id, t1.state,
(SELECT COUNT(*) FROM tablle2 t2 WHERE t2.to = t1.id) Anzahl
FROM tabelle1 t1
;
die vorrausetzung dafür ist mysql server in der version 4.1 oder höher
Ilja