如何在约会期间按销售产品数量订购?

时间:2015-12-10 22:55:03

标签: mysql sql

我需要按销售产品的数量订购结果。

以下是我(复杂)SQL的摘录:

SELECT ....
SUM(products.quantity) as numberSold,

....
ORDER by numberSold

如何在今年仅按销售商品订购?

我试过

HAVING products.products.date> '01 -01-2015',但它会影响返回的行数。

这是我没写的最简单的SQL,我必须改变:

Select Distinct
  boutique_produit.*,
  boutique_produit_description.*,
  boutique_produit_plus.*,
  Sum(boutique_commande_detail.quantite) As numberSold

From
  boutique_categorie Inner Join
  boutique_categorie_produit On boutique_categorie_produit.boutique_categorie_id
    = boutique_categorie.id_boutique_categorie Inner Join
  boutique_produit On boutique_produit.id_boutique_produit =
    boutique_categorie_produit.boutique_produit_id And
    boutique_produit.zone_id = boutique_categorie_produit.zone_id Inner Join
  boutique_produit_description
    On boutique_produit_description.boutique_produit_id =
    boutique_produit.id_boutique_produit And
    boutique_produit_description.zone_id = boutique_categorie_produit.zone_id
    And (boutique_produit_description.boutique_langue_disponible_code = 'FR')
  Inner Join
  boutique_produit_reference On boutique_produit_reference.boutique_produit_id =
    boutique_produit.id_boutique_produit And boutique_produit_reference.zone_id
    = boutique_categorie_produit.zone_id Inner Join
  boutique_produit_reference_prix
    On boutique_produit_reference_prix.boutique_produit_reference_id =
    boutique_produit_reference.id_boutique_produit_reference And
    boutique_produit_reference_prix.zone_id = boutique_categorie_produit.zone_id
  Inner Join
  boutique_taxe On boutique_taxe.id_boutique_taxe =
    boutique_produit_reference.boutique_taxe_id Inner Join
  boutique_produit_plus On boutique_produit_plus.boutique_produit_id =
    boutique_produit.id_boutique_produit And boutique_produit_plus.zone_id =
    boutique_categorie_produit.zone_id Inner Join
  boutique_produit_plus_categories
    On boutique_produit_plus_categories.boutique_produit_id =
    boutique_produit_plus.boutique_produit_id And
    boutique_produit_plus_categories.zone_id = boutique_produit_plus.zone_id And
    (boutique_produit_plus_categories.categorie_id In (1750, 1227, 1880))
  Inner Join
  poi On boutique_produit_plus.poi_id = poi.ID_poi And poi.zone_id =
    boutique_categorie_produit.zone_id And (((poi.payant = 1 And
        ('2015-12-10' >= poi.dateDebutValidite) And ('2015-12-10' <=
          poi.dateFinValidite)) Or (poi.illimite = 1))) Inner Join
  boutique_professionnel On poi.boutique_professionnel_id =
    boutique_professionnel.id_boutique_professionnel And
    boutique_professionnel.zone_id = poi.zone_id And
    (boutique_professionnel.compte_actif = 1) Left Join
  boutique_commande_detail
    On boutique_commande_detail.boutique_produit_reference_id =
    boutique_produit_reference.id_boutique_produit_reference And
    boutique_commande_detail.zone_id = boutique_categorie_produit.zone_id
Where
  boutique_categorie_produit.boutique_categorie_id = 382 And
  (boutique_produit_plus.date_fin_valid = '' Or
    boutique_produit_plus.date_fin_valid Is Null Or
    boutique_produit_plus.date_fin_valid >= '2015-12-10 23:59:59') And
  boutique_produit.produit_actif = 1 And
  boutique_categorie_produit.zone_id = 4
Group By
  boutique_produit.id_boutique_produit, boutique_produit.zone_id

Order By
  numberSold Desc
Limit 0, 60

numberSold 是重要字段

2 个答案:

答案 0 :(得分:0)

在products.date上使用WHERE子句

答案 1 :(得分:0)

如果我理解正确,您只想在products.quantity时加products.date>'01-01-2015',如果日期较低,您想要排除该数量?然后尝试CASE

SELECT ....
SUM(CASE WHEN products.date>'01-01-2015' THEN products.quantity
         ELSE 0 
    END) as numberSold,

....
ORDER by numberSold