Requête renvoyant un résultat erroné, La requête ne me renvoi la bonne valeur |
Bienvenue invité ( Connexion | Inscription )
Requête renvoyant un résultat erroné, La requête ne me renvoi la bonne valeur |
18 Aug 2010, 15:31
Message
#1
|
|
Ceinture jaune OSC 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 |
|
18 Aug 2010, 21:49
Message
#2
|
|
Ceinture marron OSC 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 ... |
|
19 Aug 2010, 09:10
Message
#3
|
|
Ceinture jaune OSC 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!!!!!!!!!!!!! |
|
19 Aug 2010, 09:36
Message
#4
|
|
Ceinture marron OSC 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. |
|
19 Aug 2010, 10:07
Message
#5
|
|
Ceinture jaune OSC 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é. |
|
Version bas débit | Nous sommes le : 29th March 2024 - 10:12 |
Ce site est déclaré auprès de la commision Nationale de l'Informatique et des Libertés (déclaration n°: 1043896) |