problema con estrazione dati da più tabelle

mediasteno

Utente Attivo
25 Gen 2010
120
0
0
Ho due tabelle, una con tutti i comuni di Italia ed una con tutti i monumenti da visitare di ogni comune di Italia. Le due tabelle sono collegate con comuni.id = monumenti.id_comune. Ciò che io devo fare è quello di stampare il nome del comune, descrizione del comune, ed elenco dei monumenti da visitare.
Ad esempio
Roma
E' la capitale di Italia, città situata nella regione lazio ecc. ecc.

Da visitare:
- colosseo
- fontana di Trevi
- pantheon
- catacombe

I primi due campi nome_comune e descrizione_comune sono nella tabella comuni, mentre il campo nome_monumento è nella tabella monumenti.
Ho creato una LEFT JOIN delle due tabelle in questo modo:

$sql_comune = "SELECT comuni.*, monumenti.* FROM comuni LEFT JOIN monumenti ON comuni.id = monumenti.id_comune WHERE comuni.id="$comune";
$result = mysql_query("$sql_comune",$link) or die ("errore nel database!");
while ($riga = mysql_fetch_array($result) )
{
$comune_nome = stripslashes($riga['comune']);
$comune_descrizione = stripslashes($riga['descrizione']);
$monumento = stripslashes($riga['monumento']);

echo "<h2>".$comune_nome."</h2><p>".$comune_descrizione."</p><ul><li>$monumento</li></ul>";
}

Il mio problema è che impostando in questo modo ho che il nome del comune e la descrizione vengono stampate un tot di volte corrispondente al numero dei monumenti estratti dalla tabella monumenti. Come posso fare ad ottenere che il tutto venga stampato una sola volta?
Sono alle prime armi con il linguaggio mysql e penso che sia un problema di impostazione di cicli, ma non so dove modificare! Tra l'altro devo unire non solo queste due tabelle ma più tabelle ho semplificato la questione a due tabelle perchè credo che il meccanismo sia lo stesso sia che si tratti di due tabelle e sia che siano più di due.
Ringrazio anticipatamente per l'aiuto
 
ciao
prova in questo modo perchè non sò se la join supporti il raggruppamento (al massimo verifica)

PHP:
<?php
//.....
$sql_c="SELECT * FROM comuni GROUP BY comuni ORDER BY comuni";
$res_c=mysql_query($sql_c);
while($riga_c=mysql_fetch_array($res_c)){
	$id_c=$riga_c['id_comune'];
	echo "comune di ".stripslashes($riga_c['comune'])." ".stripslashes($riga_c['descrizione'])."<br>";
	$sql_m="SELECT * FROM monumenti WHERE id_comune=$id_c";
	$res_m=mysql_query($sql_m);
	while($riga_m=mysql_fetch_array($res_m)){
		//e qui stampi i nomi dei mounumenti
		echo "......".stripslashes($riga_m['munumento'])."<br>";
	}
}
//.....
?>
dovrebbe stamparti es.
VENEZIA sua descrizionre
......ponte dei sospiri
......fegato alla veneziana

ROMA sua descrizione
......Colosseo
......Panteon
......Castel sant'angelo

comunque ti conviene poi vistualizzare i dati in una tabella
 

Discussioni simili