insérer Array dans requete mysql WHERE ... IN ou NOT IN
Posté : 15 mai 2008, 04:06
Bonjour!
Ma question en est une de traitement PHP des résultats obtenus par une requête MySQL. J'ai de très grosses requêtes à gérer, tant et si bien que je dois les séparer. Les séparant, je passe de 12 secondes de traitement à 2. L'inclusion n'est donc pas une bonne solution.
Voici donc ma question: comment exploiter le résultat obtenu par la première requête le plus simplement possible?
Voici où j'en suis (avec des requêtes abrégées) :
blababla
[/php]
Les détails du code et des bases importent peu. Ce que je cherche, c'est de sauter l'étape de construction de la liste.
N'y a-t-il pas une fonction du style "explode" ou devrais-je utiliser mysql_fetch_array (et comment) ou que me proposez-vous pour simplifier la chose? Je trouve étonnant de ne pouvoir exploiter directement un tableau dans une fonction qui demande un tableau.
Il me semble que le processus serait plus léger et plus rapide si je pouvais avoir une seconde requête qui serait du style de :
Merci de votre aide.
Ma question en est une de traitement PHP des résultats obtenus par une requête MySQL. J'ai de très grosses requêtes à gérer, tant et si bien que je dois les séparer. Les séparant, je passe de 12 secondes de traitement à 2. L'inclusion n'est donc pas une bonne solution.
Voici donc ma question: comment exploiter le résultat obtenu par la première requête le plus simplement possible?
Voici où j'en suis (avec des requêtes abrégées) :
//Première requête:
$requete1 = "SELECT * FROM personnes WHERE série_de_criteres";
$resultat1 = msyql_query($requete1, $db);
//Ici, je récupère les résultats pour en faire une liste
$Liste = "0, ";
while ($Details1 = mysql_fetch_object($resultat1)) {
$Liste .= $Details1->id->personne.", ";
}
//La liste est insérée dans la seconde requête
[php]$requete2 = "SELECT * FROM inscrits WHERE NOT IN ( ".$Liste." )";
$resultat1 = msyql_query($requete1, $db);blababla
[/php]
Les détails du code et des bases importent peu. Ce que je cherche, c'est de sauter l'étape de construction de la liste.
N'y a-t-il pas une fonction du style "explode" ou devrais-je utiliser mysql_fetch_array (et comment) ou que me proposez-vous pour simplifier la chose? Je trouve étonnant de ne pouvoir exploiter directement un tableau dans une fonction qui demande un tableau.
$requete2 = "SELECT * FROM inscrits WHERE NOT IN ( ".explode($resultat1)." )";
Je n'y arrive pas.Merci de votre aide.