2015-12-10 3 views
0

Мне нужно заказать результат по количеству проданных товаров.Как сделать заказ по количеству проданных товаров за день?

Вот выдержка из моего (комплекса) SQL:

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

.... 
ORDER by numberSold 

Как можно заказать по проданным только в течение этого года?

Я попытался с

HAVING products.products.date> '01 -01-2015' , но affcts количество возвращаемых строк.

Вот indigest 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 является важным полем

+0

Просьба поделиться с вами таблицей (-ями), некоторыми примерами данных и результатом, который вы пытаетесь получить для этих данных образца. Благодаря! – Mureinik

+0

Ваша 'группа by' не соответствует общему правилу: если указано предложение GROUP BY, каждая ссылка столбца в списке SELECT должна либо идентифицировать столбец группировки, либо быть аргументом функции set. – jarlh

ответ

0

использовать ИНЕКЕ на products.date

+0

no: если я просто использую WHERE, он изменит количество возвращенных строк – yarek

+0

@yarek, но вы написали, что хотите только товары, проданные в течение этого года? – Johannes

+0

Я хочу ЗАКАЗАТЬ товары, проданные в течение этого года! – yarek

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 
Смежные вопросы