Requete Mysql complexe sur 3 tables - SQL/NoSQL - Programmation
Marsh Posté le 23-07-2014 à 16:35:57
select count(C.id)
from commandes C
inner join produits P on ( C.ref_produits = P.id )
inner join pays PA on ( C.code_pays_acheteur = PA.id)
where C.comptage_poids = 0 -- ce qui semble être comptage produit dans ta demande
and PA.id <> 1
having sum(P.poids) between 500 and 1000
je ne connais pas la syntaxe précise de MySQL, mais ça s'adapte rapidement
Marsh Posté le 23-07-2014 à 17:37:48
Merci beaucoup ddr555 pour tes lumières.
J'ai adapté la requete comme ceci :
SELECT COUNT(order_id)
FROM commandes AS c, pays AS p, produits AS prod
WHERE c.code_pays_acheteur = p.code_pays and c.ref_produits = prod.ref and comptage_poids=0 and quantite*poids<1000 and quantite*poids>500 and zone_geographique = "Europe"
Le problème est que je peux avoir des valeurs dans le champ order_id identiques. Je souhaiterais pouvoir regrouper et additionner les champs quantite * poids de toutes les order_id identiques et ainsi compter qu'une fois le poids global d'une commande ayant plusieurs articles.
Comment faire ?
Merci d'avance !
Marsh Posté le 23-07-2014 à 18:59:50
Le where n'est pas bon, c'est bien un having qu'il faut utiliser. Il manque aussi un group by qq part (order_id)
QQ chose comme ça devrait marcher je pense :
Code :
|
Marsh Posté le 23-07-2014 à 16:26:01
Bonjour,
J'utilise régulièrement le forum de hardware.fr et habituellement en fouillant dans les anciens postes, je trouve systématiquement la réponse à mes questions mais aujourd'hui, ce n'est pas le cas. Je tiens à préciser que je suis un débutant en Mysql et que cette fois ci, je suis un peu paumé pour faire cette requête.
J'ai les trois tables avec les structures suivantes dans ma base de donnée avec des milliers de lignes et j'aimerai compter le nombre de numéro de commande unique dont le poids total de ses articles est compris entre 500 et 1000, avec une livraison en Europe (hors France) et dont le champ comptage produit =0 .
table "produits" :
id | ref | poids
1 | A304 | 1225
2 | A234 | 675
...
table "commandes" :
id | order_id | code_pays_acheteur | ref_produits | quantite | comptage_poids
1 | 1566 | FR | A304 | 2 | 0
2 | 1566 | FR | A234 | 1 | 0
3 | 1673 | DE | A234 | 2 | 0
4 | 1673 | DE | A304 | 10 | 0
5 | 1794 | UK | A304 | 1 | 0
...
table "pays"
id | code_pays | zone_geographique
1 | FR | France
2 | DE | Europe
3 |UK | Europe
4 | US | Monde
...
Merci d'avance pour votre aide précieuse !!