2016-04-08 17 views
1

ben şemasını değiştirmek isterdim ama ben buna bağlıyım ben aşağıdaki tabloları ilk üç tablo sütunları kimliği ve Tutar Satılan var Pivot MySQL Veri

JanDataTable 
FebDataTable 
MarDataTable 
ProductsTable 

olduğunu varsayalım. Ürün tablosunun kimliği ve Ürün Adı vardır.

ben bir şekilde kimlik ürün kimliğidir aşağıdaki çıktı üretmesi

ID | Product Name | Amount Sold | Month 
01 | TV 1   | 23   | 1  <- JanDataTable 
02 | TV 2   | 43   | 2  <- FebDataTable 
03 | Toaster 1 | 72   | 3  <- MarDataTable 

almak için bu tabloları katılması gerekir.

Sadece bir sorgulama mümkün mü?

+0

Bu tasarım sürdürülemez. Kendi aklınız için, kendinizi düzeltebileceğiniz ya da bu projeyi terk edebileceğiniz bir pozisyonda olun. – Strawberry

cevap

0
select p.product_part,s.* 
from 
(
select d.*, 1 as Month from jandatatable d 
union 
select d.*, 2 as Month from febdatatable d 
union 
select d.*, 3 as Month from mardatatable d 
) s 
join product p on s.Product_id = p.product_id 
order by s.month, p.product_id; 
+0

Teşekkür ederim, buna benzer bir şeyle sonuçlandım – user316114

0

Bu nasıl?

Bunu yapmak için LEFT JOIN'u kullanın.

select 
    p.id as ID, p.`Product Name`, 
    coalesce(jan.`Amount Sold`,0) + coalesce(feb.`Amount Sold`,0) + coalesce(mar.`Amount Sold`,0) as `Amount Sold`, 
    case when p.id = '01' then 1 
     when p.id = '02' then 2 
     when p.id = '03' thwn 3 
    end as Month 
from ProductsTable as p 
    LEFT JOIN JanDataTable as jan ON p.id = jan.id 
    LEFT JOIN FebDataTable as feb ON p.id = feb.id 
    LEFT JOIN MarDataTable as mar ON p.id = mar.id 
+0

Bir çözüm sunmaya karar verdiyseniz, bir ipucu: UNION – Strawberry