Page 1 sur 1

Pb avec la fonction count

Posté : 11 févr. 2011, 18:47
par biboulie
Bonjour,

Voilà j'ai une requête qui ressemble à ça et que je passe sous phpmyadmin afin d'exporter les résultats :

SELECT c.customers_gender, c.customers_firstname, c.customers_lastname, c.customers_dob, c.customers_email_address, ci.customers_info_date_of_last_logon, count(o.orders_id), max(o.date_purchased)
FROM customers_info ci, customers c, orders o
WHERE c.customers_newsletter=1 and c.customers_id = ci.customers_info_id and c.customers_id = o.customers_id
GROUP BY c.customers_gender, c.customers_firstname, c.customers_lastname, c.customers_dob, c.customers_email_address, ci.customers_info_date_of_last_logon

Avec notamment la fonction "count" qui me permet de compter dans ma table orders le nombre de commandes faites par un client. Jusque là pas de problème.

Le problème c'est que les résultats qui me sont retournés ne prennent pas en compte les clients n'ayant effectué aucune commande (donc colonne=0).
Seuls les clients ayant au moins une commande ressortent.

Il me faut donc passer je pense par un Left Join.
Le problème c'est qu'avec un left join, ma requête tourne en boucle. C'est certainement un pb de syntaxe. Je n'arrive pas écrire ma requête avec un left join.

Si quelqu'un peut m'aider...

D'avance merci

Re: Pb avec la fonction count

Posté : 11 févr. 2011, 22:28
par moogli
Yop,

Si je m'abuse ta requête devrait ressembler à ceci
SELECT c.customers_gender, c.customers_firstname, c.customers_lastname, c.customers_dob, c.customers_email_address, ci.customers_info_date_of_last_logon, count(o.orders_id), max(o.date_purchased)
FROM customers_info as ci
join  customers as  c on ci.customers_info_id = c.customers_id
join  orders as o 	  on ci.customers_info_id = o.customers_id
WHERE c.customers_newsletter=1
GROUP BY c.customers_gender, c.customers_firstname, c.customers_lastname, c.customers_dob, c.customers_email_address, ci.customers_info_date_of_last_logon
@+

Re: Pb avec la fonction count

Posté : 11 févr. 2011, 22:34
par biboulie
Merci pour ton aide,

Cela dit ta requête ne renvoi pas non plus les lignes où le count est égal à 0.

On en revient toujours au même...

Je pense que le problème se situe au niveau de la syntaxe de la jointure. Ca doit pouvoir se bidouiller.

Je continue de chercher...

Re: Pb avec la fonction count

Posté : 13 févr. 2011, 17:12
par moogli
Donne nous les create table Et unnjeux de donnés representatif que l'on puisse tester et mieux voir la chose (a limite explique les relations entre les tables pour aller plus vite ;)

@+

Re: Pb avec la fonction count

Posté : 14 févr. 2011, 11:41
par biboulie
Alors j'espère être assez précis :

- J'ai une table customers dans laquelle j'ai le prenom, nom, dob, email, genre avec comme clé unique customers_id

- J'ai une table customers_info dans laquelle j'ai des infos complémentaires sur mes customers comme par exemple customers_info_date_of_last_logon avec comme clé customers_info.id qui est reliée avec la table customers grace au customers_id

- J'ai une table orders dans laquelle j'ai des infos générales sur les commandes de mes clients avec comme clé orders_id qui est reliée avec la table customers grace au customers_id

- J'ai une table orders_total dans laquelle j'ai les infos détaillées de mes commandes (total, sous-total, tva, port...) avec comme clé orders_total.id qui est reliée avec la table orders grace au orders_id

Un client peut avoir 1 ou plusieurs commandes ou ne pas en avoir.
Une commande a obligatoirement des infos détaillées (orders_total) et un client.
Une commande ne peut pas ne pas avoir de client.

Voilà j'espère être assez clair...

Je cherche toujours pour ma part.