Page 1 sur 1

select dans chaine ou tableau php

Posté : 03 oct. 2012, 14:18
par mycha
Bonjour,
J'ai une chaine (ou un tableau) en variable php et je voudrai faire un select imbriqué avec clause WHERE cette chaine. Voici mon script
mysql_query("SELECT DISTINCT(id_client) FROM commande WHERE id_commande IN (SELECT DISTINCT(id_commande) FROM commandeArticle WHERE id_article IN ('$id_articles') AND effectue=1) ORDER BY id_client");
$id_articles est une suite de nombres séparés par des virgules.
Le script fonctionne mais seule la première valeur est prise en compte.

Re: select dans chaine ou tableau php

Posté : 03 oct. 2012, 14:40
par Mazarini
Peut être :
SELECT DISTINCT(id_client) FROM commande,  commandeArticle 
WHERE commande.id_commande = commandeArticle.id_commande  
and id_article IN ($id_articles) 
AND effectue=1 
ORDER BY id_client
J'ai supprimé les select imbriqués : c'est mal.
J'ai enlevé les quotes dans in ('$id_articles'), ca doit donner quelques chose comme : in (1,2,3) ce qui me semble correct.

Re: select dans chaine ou tableau php

Posté : 03 oct. 2012, 14:53
par mycha
Effectivement, ça marche ! Merci beaucoup.
Pour ce qui est des select imbriqués, j'ai souvent lu que cela gagnait de la connexion. Je les éviterai à l'avenir.

Re: [RESOLU] select dans chaine ou tableau php

Posté : 03 oct. 2012, 15:32
par Mazarini
Normalement, il est possible d'utiliser une jointure à la place des requêtes imbriquées et c'est en théorie plus performant. Je pense que tu confonds faire 2 requêtes et faire des requêtes imbriquées.

Le seul cas ou j'ai des problèmes avec les requêtes imbriquées, c'est lorsqu'il y a des fonctions portant sur plusieurs lignes genre min, max...