une seule requête...

michou
Invité n'ayant pas de compte PHPfrance

04 juil. 2008, 00:09

Bonjour,

j'ai une table client et une table commande.

Pour des raisons d'optimisation, je voudrais faire une seule requête pour retirer les infos suivantes, mais je ne sais pas comment :

Nombre de clients total par pays
ET
nombre de clients ayant commandé au moins une fois par pays

Les clients sont dans la table client et seuls les clients ayant passé au moins une commande sont dans la table commande (liaison id_client).

Code : Tout sélectionner

SELECT COUNT(id_client) FROM client GROUP BY pays
=> me donne tous les clients par pays

Code : Tout sélectionner

SELECT COUNT(client.id_client) FROM client, commande WHERE client.id_client = commande.id_client GROUP BY client.pays
=> me donne tous les clients ayant commandé au moins une fois

Comment faire pour faire une seule requête ??

Merci !!



create table

Eléphant du PHP | 422 Messages

04 juil. 2008, 09:57

Tu peux travailler avec les unions avec un truc dans le style

Code : Tout sélectionner

SELECT 'T' As typeclient, pays, COUNT(id_client) FROM client GROUP BY pays union SELECT '1' As typeclient, client.pays, COUNT(client.id_client) FROM client, commande WHERE client.id_client = commande.id_client GROUP BY client.pays
La constante typeclient est là uniquement si tu as besoin de différencier les deux. Sinon, tu peux la supprimer : mais attention, dans ce cas, il faut utiliser union all à la place d'union (union "simple" filtre les doublons produits par les deux requêtes)

http://dev.mysql.com/doc/refman/5.0/fr/union.html