bonjour,
je cherche à optimiser une requete sur deux tables :
1 . table manif ; table qui stocke des événements avec un champs ville "renseigné par le nom de la ville" pour chaque événement
2. table villes : table qui stocke les villes de plusieurs régions et pour chaque ville champs "pays/territoire"
si je fais
$sql = "SELECT DISTINCT * FROM manif LEFT JOIN villes ON villes.nom_ville=manifestation.manifestation_ville ";
$sql .="WHERE (manifestation_date_debut >='2006/01/16' OR manifestation_date_fin >='2006/01/16') AND villes.ref_pays='3'";
çà marche mais çà mouline .. car il doit comparer avec tous les noms de villes (5000)
j'ai essayé de faire une pré requete sur la table villes pour extraire les villes concernéés par la reference pays :
$sql = "SELECT nom_ville FROM villes ";
$sql .= "WHERE ref_pays = ".$pays;
$rs = mysql_query($sql);
$villes_ok = array() ;
while ($rsc=mysql_fetch_object($rs))
{
$villes_ok[] = $rsc->nom_ville;
}
et ensuite :
$sql = "SELECT DISTINCT ".$liste_champs." FROM manif,villes WHERE (manifestation_date_debut >='2006/01/16' OR manifestation_date_fin >='2006/01/16') ";
$sql = "AND ".in_array(manifestation.manifestation_ville, $villes_ok)."";
mais .. çà marche pas !
si vous avez une idée pour améliorer çà
merci