osCommerce France : Accueil Forum Portail osCommerce France Réponses aux questions Foire aux contributions

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> Requête renvoyant un résultat erroné, La requête ne me renvoi la bonne valeur
fayabones
posté 18 Aug 2010, 15:31
Message #1


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 51
Inscrit : 5-February 10
Lieu : Albi
Membre no 27021



Bonjour à tous,

J'ai créé une requête qui permet de sélectionner les clients français qui ont dépensé plus de 3000€ d'achats, ayant utilisé un code "ma-reduc" et vivant en France.
Dans la table répertoriant les différents codes, un client est présent plusieurs fois avec le même code utilisé à des dates différentes...
Le résultat de SUM(ot.value) me renvoi la somme des commandes passés par un client multiplié par le nombre d'occurence de l'ID client dans la table coupon_redeem_track.
J'ai donc ce calcul : SUM(ot.value) * count(crt.customer_id).

J'utilise pourtant un group by...
Je ne trouve pas la solution,
Merci d'avance pour votre aide.

Mika


Voici la requête :
CODE

SELECT o.customers_id, SUM(ot.value) as CA
FROM customers c
INNER JOIN orders o on c.customers_id = o.customers_id
INNER JOIN orders_total ot ON o.orders_id = ot.orders_id
INNER JOIN coupon_redeem_track crt ON o.customers_id = crt.customer_id
WHERE o.customers_country LIKE "%France (métropolitaine)%"
AND ot.title = "Total:"
AND cou.coupon_code like "ma-reduc"
GROUP BY crt.customer_id, o.customers_id
HAVING SUM(ot.value) > 3000

Go to the top of the page
 
FoxP2
posté 18 Aug 2010, 21:49
Message #2


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1665
Inscrit : 3-June 09
Membre no 25501



et l'alias 'cou' correspond à quelle table ?
franchement, sans la structure des tables, je ne vois pas comment on va t'aider... et si tu penses qu'on va installer la contribution (non citée) pour t'aider ... bah hum ... twisted.gif
Go to the top of the page
 
fayabones
posté 19 Aug 2010, 09:10
Message #3


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 51
Inscrit : 5-February 10
Lieu : Albi
Membre no 27021



Je suis désolé, j'ai voulu rendre ma requête plus compréhensible et j'ai supprimé la ligne qui fait référence au coupon :

CODE

SELECT o.customers_id ,SUM(ot.value) as CA
FROM customers c
INNER JOIN orders o on c.customers_id = o.customers_id
INNER JOIN orders_total ot ON o.orders_id = ot.orders_id
INNER JOIN coupon_redeem_track crt ON o.customers_id = crt.customer_id
INNER JOIN coupons cou ON crt.coupon_id = cou.coupon_id
WHERE o.customers_country LIKE "%France (métropolitaine)%"
and o.customers_id IN and ot.title = "Total:"
and cou.coupon_code like "ma-reduc"
group by o.customers_id, o.customers_name, c.customers_email_address, o.customers_country
having SUM(ot.value) > 3000


la table coupon_redeem_track est composé de la manière suivante :

CODE
CREATE TABLE IF NOT EXISTS `coupon_redeem_track` (
`unique_id` int(11) NOT NULL AUTO_INCREMENT,
`coupon_id` int(11) NOT NULL DEFAULT '0',
`customer_id` int(11) NOT NULL DEFAULT '0',
`redeem_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`redeem_ip` varchar(32) NOT NULL DEFAULT '',
`order_id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`unique_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=167422 ;


et la table coupon de la façon suivante :

CODE
CREATE TABLE IF NOT EXISTS `coupons` (
`coupon_id` int(11) NOT NULL AUTO_INCREMENT,
`coupon_type` char(1) NOT NULL DEFAULT 'F',
`coupon_code` varchar(32) NOT NULL DEFAULT '',
`coupon_amount` decimal(8,4) NOT NULL DEFAULT '0.0000',
`coupon_minimum_order` decimal(8,4) NOT NULL DEFAULT '0.0000',
`coupon_start_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`coupon_expire_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`uses_per_coupon` int(5) NOT NULL DEFAULT '1',
`uses_per_user` int(5) NOT NULL DEFAULT '0',
`restrict_to_products` varchar(255) DEFAULT NULL,
`excl_products` varchar(255) DEFAULT NULL,
`restrict_to_categories` varchar(255) DEFAULT NULL,
`excl_categories` varchar(255) DEFAULT NULL,
`restrict_to_customers` text,
`coupon_active` char(1) NOT NULL DEFAULT 'Y',
`date_created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
`date_modified` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`coupon_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7277 ;


Je n'ai pas demandé m'aider en me corrigeant ma contribution!!! Il est juste question d'un problème de requêtes!!!!!!!!!!!!!

Go to the top of the page
 
FoxP2
posté 19 Aug 2010, 09:36
Message #4


Ceinture marron OSC
Icône de groupe

Groupe : Membres
Messages : 1665
Inscrit : 3-June 09
Membre no 25501



une structure de table se présente ainsi :

Code
mysql> describe coupons;
+------------------------+--------------+------+-----+---------------------+----------------+
| Field                  | Type         | Null | Key | Default             | Extra          |
+------------------------+--------------+------+-----+---------------------+----------------+
| coupon_id              | int(11)      | NO   | PRI | NULL                | auto_increment |
| coupon_type            | char(1)      | NO   |     | F                   |                |
| coupon_code            | varchar(32)  | NO   |     |                     |                |
| coupon_amount          | decimal(8,4) | NO   |     | 0.0000              |                |
| coupon_minimum_order   | decimal(8,4) | NO   |     | 0.0000              |                |
| coupon_start_date      | datetime     | NO   |     | 0000-00-00 00:00:00 |                |
| coupon_expire_date     | datetime     | NO   |     | 0000-00-00 00:00:00 |                |
| uses_per_coupon        | int(5)       | NO   |     | 1                   |                |
| uses_per_user          | int(5)       | NO   |     | 0                   |                |
| restrict_to_products   | varchar(255) | YES  |     | NULL                |                |
| excl_products          | varchar(255) | YES  |     | NULL                |                |
| restrict_to_categories | varchar(255) | YES  |     | NULL                |                |
| excl_categories        | varchar(255) | YES  |     | NULL                |                |
| restrict_to_customers  | text         | YES  |     | NULL                |                |
| coupon_active          | char(1)      | NO   |     | Y                   |                |
| date_created           | datetime     | NO   |     | 0000-00-00 00:00:00 |                |
| date_modified          | datetime     | NO   |     | 0000-00-00 00:00:00 |                |
+------------------------+--------------+------+-----+---------------------+----------------+

mysql> describe coupon_redeem_track;
+-------------+-------------+------+-----+---------------------+----------------+
| Field       | Type        | Null | Key | Default             | Extra          |
+-------------+-------------+------+-----+---------------------+----------------+
| unique_id   | int(11)     | NO   | PRI | NULL                | auto_increment |
| coupon_id   | int(11)     | NO   |     | 0                   |                |
| customer_id | int(11)     | NO   |     | 0                   |                |
| redeem_date | datetime    | NO   |     | 0000-00-00 00:00:00 |                |
| redeem_ip   | varchar(32) | NO   |     |                     |                |
| order_id    | int(11)     | NO   |     | 0                   |                |
+-------------+-------------+------+-----+---------------------+----------------+


et non pas la requête de création de celles ci.
bref, quand tu te seras un peu calmé avec tes !!!!!!! sur une interprétation erronée de mes propos, je reviendrai peut être sur la question.
Go to the top of the page
 
fayabones
posté 19 Aug 2010, 10:07
Message #5


Ceinture jaune OSC
Icône de groupe

Groupe : Membres
Messages : 51
Inscrit : 5-February 10
Lieu : Albi
Membre no 27021



Désolé pour ma réponse mais au vu de la tienne (la première), je me suis senti agressé...
Tu as reconnu tes tords et je reconnais les miens .
Tout d'abord je m'excuse.

Pour la structure des tables, j'avais commencé à les faire comme les tiennes puis je me suis dit que ça n'allait pas, du coup j'ai mis la création des tables.

Encore désolé.
Go to the top of the page
 

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



RSS Version bas débit Nous sommes le : 28th March 2024 - 11:08
Ce site est déclaré auprès de la commision Nationale
de l'Informatique et des Libertés (déclaration n°: 1043896)