Noah (nicht der aus der Bibel): Mysql, zusammenzählen über 2 Tabellen

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

  1. 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

  2. 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