LEFT JOIN mit drei Tabellen?

PHP-Fan

Erfahrenes Mitglied
Hallo,

ich habe folgendes Script nach Stundenlanger arbeit erstellt. Das ganze sieht momentan so aus, dass ich zwei Tabellen habe, einmal eine mit den Ländern und einmal eine mit den Vereinen. Es soll zu jedem Land die dazugehörigen Vereine angezeigt werden. Das funktioniert auch.

Beispiel:

Deutschland
- FSV Mainz 05
-- Alemania Aachen


Jetzt soll aber noch, zu jedem Land die dazugehörige Liga angezeigt werden und anschließend die Vereine.

Beispiel:

Deutschland
- 1. Bundesliga
-- FSV Mainz 05
-- Alemania Aachen

Nur wie mache ich das?

Dies ist mein Code:

PHP:
<?

$sql = 'SELECT
          t1.id AS landid,
					t1.land AS land,
					t2.id AS ligaid,
          t2.vereins_name AS vereins_name
				FROM
					laender t1
				LEFT JOIN
					vereine t2
				ON
				  t1.id = t2.landid
				ORDER BY
					t1.land, t2.vereins_name ASC';

$result = mysql_query ($sql) or die (mysql_error ());

$laender = array ();
if ($result and mysql_num_rows ($result) > 0)
{
	while ($data = mysql_fetch_assoc ($result))
	{
		$liga = array ();
		$liga['id'] = $data['ligaid'];
		$liga['name'] = $data['vereins_name'];

		$laender[$data['landid']]['land'] = $data['land'];
		$laender[$data['landid']]['vereins_name'][] = $liga;

	} // While
}

// Darstellung
foreach ($laender as $landid => $land)
{

$verein = $liga['id'];
$dbanfrage2 = "SELECT * from videos WHERE landid = '$landid' AND status = '1'";
$result2 = mysql_query ($dbanfrage2);

	if($_GET['landid'] == ''){
	echo '&nbsp;<b><a href="index.php?site=news.php&landid='.$landid.'&show=ja&i=1">'.$land['land'].'</a></b> ('.mysql_num_rows($result2).')<br>';
							 }else{
	if($_GET['landid'] == $landid){
	echo '&nbsp;<b><a href="index.php">'.$land['land'].'</a></b> ('.mysql_num_rows($result2).')<br>';
					         }else{
	echo '&nbsp;<b><a href="index.php?site=news.php&landid='.$landid.'&show=ja&i=1">'.$land['land'].'</a></b> ('.mysql_num_rows($result2).')<br>';
					              }
					              }





	foreach ($land['vereins_name'] as $liga)
	{

$verein = $liga['id'];
$dbanfrage = "SELECT * from videos WHERE vereinid = '$verein' AND status = '1'";
$result = mysql_query ($dbanfrage);

		if(mysql_num_rows($result) <= '0'){ }else{ if($_GET['landid'] == $landid){ if($_GET['i'] == '1'){ echo '&nbsp; &raquo; <a href="index.php?site=auswahl.php&verein='.$liga['id'].'&landid='.$landid.'&i=1">'.$liga['name'];

echo ' ('.mysql_num_rows($result).')</a><br>';
								      }
								      					     }
	}
}
												}

?>

Das ist mein Tabelleaufbau:

laender:

http://img152.imageshack.us/img152/4170/59146264on0.jpg

ligen:

http://img91.imageshack.us/img91/3752/25898472hq3.jpg

vereine:

http://img266.imageshack.us/img266/8940/27129924ym1.jpg

Vielen Dank für eure Hilfe!
 
Habe mich jetzt nicht an deine Tabellenbezeichnungen gehalten aber versuch mal folgendes:
SQL:
SELECT laender.laender, ligen.liga, vereine.vereine
FROM vereine RIGHT JOIN (laender LEFT JOIN ligen ON laender.laenderid = ligen.laenderid) ON vereine.ligenid = ligen.ligaid
WHERE laender.laender="Italien";
 
Zurück