une seule requête...

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : une seule requête...

par caroube » 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

une seule requête...

par michou » 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