par
AB » 26 juin 2007, 00:22
Pour ne pas avoir de répétition dans le résultat, je ferais plutôt :
$query = 'SELECT DISTINCT `NumeroVelo` FROM velos
WHERE `NumeroVelo` NOT IN
(SELECT `NumeroVelo`
FROM velos
WHERE CategoriePtPassage = "BS"
OR CategoriePtPassage = "BT"
OR CategoriePtPassage = "BR")';
C'est nickel mais ce type de requête ne fonctionne pas encore sur de nombreux serveurs mutualisés.
Dans ce cas et si l'on veut n'effectuer qu'une seule requête, il reste la méthode du traitement php. Pour avoir le même résultat je faisais des trucs du genre:
$query = "SELECT NumeroVelo, CategoriePtPassage FROM velos";
$result = mysql_query($query);
$parcour = array();
$parcour_ok = array();
while ($row = mysql_fetch_assoc($result)){$parcour[$row['NumeroVelo']][] = $row['CategoriePtPassage'];}
mysql_free_result($result);
foreach ($parcour as $numvelo => $index)
{
(!in_array('BT', $parcour[$numvelo]) && !in_array('BR', $parcour[$numvelo]) && !in_array('BS', $parcour[$numvelo]))? $parcour_ok[] = $numvelo : '';
}
foreach ($parcour_ok as $numvelo)
{echo $numvelo.'<br>';}
C'est là qu'on voit l'avantage des nouvelles techniques et de l'optimisation des requêtes
