Aide - Recherche - Membres - Calendrier
Version complète : Requête renvoyant un résultat erroné
Forum osCommerce-fr > Adapter OsCommerce MS2 > Echanges développeurs
fayabones
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

FoxP2
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
fayabones
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!!!!!!!!!!!!!

FoxP2
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.
fayabones
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é.
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2013 Invision Power Services, Inc.