Forum

2 Tabloyu Toplayara...
 
Bildirimler
Hepsini Temizle

2 Tabloyu Toplayarak Birleştirme Sorunu

5 Yazılar
2 Üyeler
0 Likes
2,749 Görüntüleme
(@batuhanogunlu)
Gönderiler: 5
Active Member
Konu başlatıcı
 

Merhaba,

istanbul satışları ve izmir satışları tablolarında  bulunan satırları  toplayıp iki ildeki toplam satısı bulmak istiyorum ama çıktı olarak sadece iki ildede satılan ürünleri toplayıp veriyor. Yani ürün sadece istanbulda satıldıysa listede görünmüyor nerede hata yapıyorum?

SELECT        dbo.STOK.STOKKODU, dbo.STOK.STOKADI, 
                             (SELECT        ISNULL(dbo.ISTANBUL.Ocak + NULLIF (dbo.IZMIR.OCAK, 0), 0) AS OCAK) AS OCAK,
                             (SELECT        ISNULL(dbo.ISTANBUL.Subat + NULLIF (dbo.IZMIR.SUBAT, 0), 0) AS SUBAT) AS SUBAT,
                             (SELECT        ISNULL(dbo.ISTANBUL.Mart + NULLIF (dbo.IZMIR.MART, 0), 0) AS MART) AS MART,
                             (SELECT        ISNULL(dbo.ISTANBUL.Nisan + NULLIF (dbo.IZMIR.NISAN, 0), 0) AS NISAN) AS NISAN,
                             (SELECT        ISNULL(dbo.ISTANBUL.Mayis + NULLIF (dbo.IZMIR.MAYIS, 0), 0) AS MAYIS) AS MAYIS,
                             (SELECT        ISNULL(dbo.ISTANBUL.Haziran + NULLIF (dbo.IZMIR.HAZIRAN, 0), 0) AS HAZIRAN) AS HAZIRAN,
                             (SELECT        ISNULL(dbo.ISTANBUL.temmuz + NULLIF (dbo.IZMIR.TEMMUZ, 0), 0) AS TEMMUZ) AS TEMMUZ,
                             (SELECT        ISNULL(dbo.ISTANBUL.Agustos + NULLIF (dbo.IZMIR.AGUSTOS, 0), 0) AS AGUSTOS) AS AGUSTOS,
                             (SELECT        ISNULL(dbo.ISTANBUL.Eylul + NULLIF (dbo.IZMIR.EYLUL, 0), 0) AS EYLUL) AS EYLUL,
                             (SELECT        ISNULL(dbo.ISTANBUL.Ekim + NULLIF (dbo.IZMIR.EKIM, 0), 0) AS EKIM) AS EKIM,
                             (SELECT        ISNULL(dbo.ISTANBUL.Kasim + NULLIF (dbo.IZMIR.KASIM, 0), 0) AS KASIM) AS KASIM,
                             (SELECT        ISNULL(dbo.ISTANBUL.Aralik + NULLIF (dbo.IZMIR.ARALIK, 0), 0) AS ARALIK) AS ARALIK
FROM            dbo.STOK FULL OUTER JOIN
                         dbo.ISTANBUL ON dbo.STOK.STOKKODU = dbo.ISTANBUL.STOKKODU FULL OUTER JOIN
                         dbo.IZMIR ON dbo.STOK.STOKKODU = dbo.IZMIR.STOKKODU

 
Gönderildi : 03/12/2018 14:51

(@cankaya)
Gönderiler: 117
Üye
 

Sorgunuz biraz karışık tam olarak ne yapmaya çalışıyor bu sorgu üzerine düşünmek lazım 🙂 Dolayısıyla nerede hata yapıyorsunuz bilemiyorum.

 

Üç adet tablonuz var. istanbul izmir ve stok. Neden stok ile full outer yapıyorsunuz anlayamadım. Sample data verirseniz üç tablo içinde size yardımcı olabiliriz. 

 

Tüm ürünlerin stokta bir kaydı olduğunu varsayıyorum. Şuna benzer bir sorgunuz olmalı. 

Select

SUM(IFNULL(I.Ocak,0)+IFNULL(I2.Ocak,0)) as Ocak

FROM Stok S

LEFT JOIN Istanbul I ON S.StockCode=I.StockCode

LEFT JOIN Izmir I2 ON S.StockCode=I2.StockCode

 

 
Gönderildi : 03/12/2018 18:37

(@batuhanogunlu)
Gönderiler: 5
Active Member
Konu başlatıcı
 

Sorgunuz biraz karışık tam olarak ne yapmaya çalışıyor bu sorgu üzerine düşünmek lazım 🙂 Dolayısıyla nerede hata yapıyorsunuz bilemiyorum.

 

Üç adet tablonuz var. istanbul izmir ve stok. Neden stok ile full outer yapıyorsunuz anlayamadım. Sample data verirseniz üç tablo içinde size yardımcı olabiliriz. 

 

Tüm ürünlerin stokta bir kaydı olduğunu varsayıyorum. Şuna benzer bir sorgunuz olmalı. 

Select

SUM(IFNULL(I.Ocak,0)+IFNULL(I2.Ocak,0)) as Ocak

FROM Stok S

LEFT JOIN Istanbul I ON S.StockCode=I.StockCode

LEFT JOIN Izmir I2 ON S.StockCode=I2.StockCode

 

 

Öncelikle cevabınız için teşekkür ederim. Sql konusunda uzman değilim. İnternetten bulduğum örnekleri birşeltirerek yapmaya çalıştım.

Stok tablosu ile yapma sebebim belki bütün stokaları getirirsem sadece eşleşenleri getirme çabasıyla tamamen 🙂

 

İstanbul tablosu Örnek:

Stok.Kodu    Ocak    Şubat    Mart    Nisan

Ürün 1            1          0         3         4

Ürün 2            3          4          0        0

Ürün 5            7          4          9         1

Ürün 7            1          9          0         3

 

izmir tablosu örnek: 

Stok.Kodu    Ocak    Şubat    Mart    Nisan

Ürün 2            3          2          5         6

Ürün 8            7          2          5         5

Ürün 12          8          4          8         9

Ürün 15          5          8          2         4

 

Çıktı tablo 

Stok.Kodu    Ocak    Şubat    Mart    Nisan

Ürün 2            6          6          5         6

 

Benim istediğim 

Stok.Kodu    Ocak    Şubat    Mart    Nisan

Ürün 1            1          0         3         4

Ürün 2            6          6          5         6

Ürün 5            7          4          9         1

Ürün 7            1          9          0         3

Ürün 8            7          2          5         5

Ürün 12          8          4          8         9

Ürün 15          5          8          2         4

 
Gönderildi : 04/12/2018 13:05

(@cankaya)
Gönderiler: 117
Üye
 

Paylaştığınız örnekte, iki tabloyu union all ile birleştirip tüm kayıtların olduğu bir tablo haline getirebilirsiniz. full outer join de kullanabilirsiniz. Ancak size aşağıdaki metot daha kolay gelecektir.

Tüm kayıtları x adında bir tabloda stok.kodu na göre gruplayıp eşleşenleri toplayıp size çıktısını verecektir.

 

select SUM(Ocak),    SUM(Şubat),    SUM(Mart),   SUM(Nisan) FROM (

select * from Istanbul

UNION ALL

select * from Izmir

) x

group by Stok.Kodu

Kolaylıklar...

 
Gönderildi : 04/12/2018 19:19

(@batuhanogunlu)
Gönderiler: 5
Active Member
Konu başlatıcı
 

Yardımınız için çok teşekkür ederim sayenizde yapabildim.

 
Gönderildi : 04/12/2018 20:30

Paylaş: