Ta table "vélos" est:J'aimerais ressortir tous les vélos dont TOUS les Ptpassage sont différent de 'BT' 'BS' et 'BR'.
Code : Tout sélectionner
SELECT * FROM velos WHERE ID NOT IN (SELECT DISTINCT ID FROM velos WHERE PtPassage = "BS" OR PtPassage = "BT" OR PtPassage = "BR")
Code : Tout sélectionner
SELECT * FROM vélos WHERE CategoriePtPassage != 'BT' AND CategoriePtPassage != 'BS' AND CategoriePtPassage != 'BR'
ça n'ira pas mieux puisque la requête va retourner également le vélo 102 qui a fait au moins un passage sans BR BT ou BSTu parlais tout à l'heure de Ptpassage, alors qu'en réalité tu pensais CategoriePtPassage.
Remplace alors PtPassage par CategoriePtPassage:Code : Tout sélectionner
SELECT * FROM vélos WHERE CategoriePtPassage != 'BT' AND CategoriePtPassage != 'BS' AND CategoriePtPassage != 'BR'
Code : Tout sélectionner
SELECT * FROM vélos
WHERE `NumeroVelo` NOT IN
(SELECT DISTINCT `NumeroVelo`
FROM vélos
WHERE CategoriePtPassage = "BS"
OR CategoriePtPassage = "BT"
OR CategoriePtPassage = "BR")
$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.$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
(!in_array('BT', $parcour[$numvelo]) && !in_array('BR', $parcour[$numvelo]) && !in_array('BS', $parcour[$numvelo]))? $parcour_ok[] = $numvelo : '';
je trouve tout de même que cette syntaxe est plus lisible dans ce cas if ( !in_array('BT', $parcour[$numvelo]) && !in_array('BR', $parcour[$numvelo]) && !in_array('BS', $parcour[$numvelo]))
{
$parcour_ok[] = $numvelo;
}
$query = "SELECT NumeroVelo, CategoriePtPassage FROM velos";
$result = mysql_query($query);
$parcour = array();
while ($row = mysql_fetch_assoc($result)){$parcour[$row['NumeroVelo']][] = $row['CategoriePtPassage'];}
mysql_free_result($result);
foreach ($parcour as $numvelo => $index)
{
if (!in_array('BT', $parcour[$numvelo]) && !in_array('BR', $parcour[$numvelo]) && !in_array('BS', $parcour[$numvelo]))
echo $numvelo;
}
Ce code peut servir pour ceux qui n'ont pas la version mysql "dernier cri" sur leur serveur distant.function topvision($type) {
$querytop = $this->db_mysql("SELECT NBVISION, TITRE FROM PA_MEDIA WHERE TYPE='$type' ORDER BY NBVISION DESC LIMIT 0,10;");
$reponses = "";
$i = 1;
while($row = mysql_fetch_array($querytop, MYSQL_ASSOC)) {
$reponses .= $i . ') <span class="engras">'.$row['TITRE'].'</span> (<span class="enitalic">'.$row['NBVISION'].'</span> visions)<br />';
$i = $i + 1;
}
return $reponses;
}