2016-08-05 2 views
0

Я хочу сосчитать (текущий день продажи и ежемесячную распродажу И ПРОДАЮ КВАРТАЛЫ) из моего продукта продавать таблицу, индивидуально все три запроса работают нормально, но я хочу, чтобы их закололи в один.sql multiple join query и multiple count

SELECT tm.internal_name AS model_number, tm.item_description, tm.mrp, tm.asin, COUNT(product_serial_no) AS `S_FTD` FROM register_product_claim INNER JOIN tbl_model tm ON register_product_claim.model_number = tm.asin WHERE retailer_code = '9017' AND register_product_claim.dt = '2016-08-04' GROUP BY tm.asin ORDER BY register_product_claim.dt DESC LIMIT 0 , 30 

Это для конкретной розничной торговли на текущую дату

2) Это для Monthly распродать графа

SELECT tm.internal_name AS model_number, tm.item_description, tm.mrp, tm.asin, COUNT(product_serial_no) AS `S_MTD` FROM register_product_claim INNER JOIN tbl_model tm ON register_product_claim.model_number = tm.asin WHERE retailer_code = '9017' AND MONTH(register_product_claim.dt) = '08' GROUP BY tm.asin ORDER BY register_product_claim.dt DESC LIMIT 0 , 30 

3) Это за квартал

SELECT tm.internal_name AS model_number, tm.item_description, tm.mrp, tm.asin, COUNT(product_serial_no) AS `S_QTD` 
FROM register_product_claim INNER JOIN tbl_model tm ON register_product_claim.model_number = tm.asin WHERE retailer_code = '9017' 
AND (MONTH(register_product_claim.dt) = '08' 
OR MONTH(register_product_claim.dt) = '07' 
OR MONTH(register_product_claim.dt) = '06' 
) GROUP BY tm.asin ORDER BY register_product_claim.dt DESC 
LIMIT 0 , 30 

Требуемый выход

model_number | item_description | mrp | asin | S_FTD | S_MTD | S_QTD 
+0

Вы можете разместить дату выборки и ожидать результата. –

ответ

0

попробовать что-то вроде этого

SELECT 
    stat1.model_number model_number, 
    stat1.item_description item_description, 
    stat1.mrp mrp, 
    stat1.asin asin, 
    stat1.S_FTD S_FTD, 
    stat2.S_MTD S_MTD, 
    stat3.S_QTD S_QTD 
FROM 
    (SELECT 
     tm.internal_name AS model_number, 
      tm.item_description, 
      tm.mrp, 
      tm.asin, 
      COUNT(product_serial_no) AS `S_FTD` 
    FROM 
     register_product_claim 
    INNER JOIN tbl_model tm ON register_product_claim.model_number = tm.asin 
    WHERE 
     retailer_code = '9017' 
      AND register_product_claim.dt = '2016-08-04' 
    GROUP BY tm.asin 
    ORDER BY register_product_claim.dt DESC 
    LIMIT 0 , 30) stat1 
     JOIN 
    (SELECT 
     tm.internal_name AS model_number, 
      COUNT(product_serial_no) AS `S_MTD` 
    FROM 
     register_product_claim 
    INNER JOIN tbl_model tm ON register_product_claim.model_number = tm.asin 
    WHERE 
     retailer_code = '9017' 
      AND MONTH(register_product_claim.dt) = '08' 
    GROUP BY tm.asin 
    ORDER BY register_product_claim.dt DESC 
    LIMIT 0 , 30) stat2 ON stat1.model_number = stat2.model_numer 
     JOIN 
    (SELECT 
     tm.internal_name AS model_number, 
      COUNT(product_serial_no) AS `S_QTD` 
    FROM 
     register_product_claim 
    INNER JOIN tbl_model tm ON register_product_claim.model_number = tm.asin 
    WHERE 
     retailer_code = '9017' 
      AND (MONTH(register_product_claim.dt) = '08' 
      OR MONTH(register_product_claim.dt) = '07' 
      OR MONTH(register_product_claim.dt) = '06') 
    GROUP BY tm.asin 
    ORDER BY register_product_claim.dt DESC 
    LIMIT 0 , 30) stat3 ON stat1.model_number = stat3.model_number 
+0

Благодарим за ответ, запрос работает по одной проблеме, за месяц мудрый и четвертый мудрый у нас есть список продуктов, которые продаются, но были показаны только две модели, а месяц мудрый и четвертый мудрый запрос около 5 продуктов – user3438532

+0

ok, попробуйте чтобы изменить stat1 + stat2 JOIN на LEFT JOIN – Vanojx1

+0

ничего не случилось :(, не могли бы вы отредактировать ответ – user3438532