SQL-TABLO ARASI FARK

Katılım
22 Mar 2017
Mesajlar
11
Puanları
1
Yaş
33
Yapmak istediğim tam olarak aşağıda anlattığım şekildedir.

x ve y adlarında iki tablom var.
Altta koyu renkli olanlar sütun başlıklarıdır aralarına virgül koydum.
x tablosu için;

x_id , adetx , isim
1 200 ab
2 300 av
3 400 dv
4 500 xy

y tablosu için;

y_id , x_id , adety
1 1 50
2 1 60
3 2 150
4 3 350
yukarıda örnek olarak verdim.

Görüldüğü gibi x tablosunda 4 numaralı id nin adet i 500 ve isim i xy dir fakat x_id si y tablosunda yoktur. Fakat olmamasına rağmen eğer yoksa bile farkı görmek istiyorum.Yani yoksa farkın direkt 500 olması lazım.
örnek olarak "where x.x_id=y.x_id" yaptığım zaman sadece her iki tabloda olanlar geliyor.Ben sağ taraftaki tabloda olmasa dahi,soldaki tablodan adet i alıp çıkarma işlemini yapmasını istiyorum.
y tablosunda x_id ler grup olacak şekilde toplamak istiyorum ve x tablosu ile birlikte göstermek istiyorum. Yani olmasını istediğim yukarıdaki örnekteki değerleri baz alarak aşağıya uyguluyorum.

isim adetx adety fark
ab 200 110 90
av 300 150 150
dv 400 350 50
xy 500 0 500


Lütfen acil yardım
 
X de olup Y de olmayanlar için.
SELECT * FROM X WHERE NOT EXISTS (SELECT * FROM Y WHERE X.xid = (Y.xid)

Veya Toplamları farklı olanlar için
SELECT *, (SELECT SUM(ADETY) FROM Y WHERE X.xid = Y.xid)
FROM X WHERE
NOT EXISTS (SELECT * FROM Y WHERE X.xid = Y.xid) OR
(SELECT SUM(ADETY) FROM Y WHERE X.xid = Y.xid) <> ADETX

Veya X deki herşey + Y toplamları
SELECT *, (SELECT SUM(ADETY) FROM Y WHERE X.xid = Y.xid)
FROM X
 
X de olup Y de olmayanlar için.
SELECT * FROM X WHERE NOT EXISTS (SELECT * FROM Y WHERE X.xid = (Y.xid)

Veya Toplamları farklı olanlar için
SELECT *, (SELECT SUM(ADETY) FROM Y WHERE X.xid = Y.xid)
FROM X WHERE
NOT EXISTS (SELECT * FROM Y WHERE X.xid = Y.xid) OR
(SELECT SUM(ADETY) FROM Y WHERE X.xid = Y.xid) <> ADETX

Veya X deki herşey + Y toplamları
SELECT *, (SELECT SUM(ADETY) FROM Y WHERE X.xid = Y.xid)
FROM X
Sayın ISMAILY yardımınız için çok teşekkür ederim. Verdiğiniz bilgi tam olarak istediğimi karşılıyor. Emek verip vakit ayırdığınız için çok sağolun. Bu kadar kısa zamanda cevap alabileceğimi sanmıyordum. Erken yetiştiniz yardımıma:):)
 

Forum istatistikleri

Konular
129,798
Mesajlar
930,191
Kullanıcılar
452,591
Son üye
Ercan Akkaya

Yeni konular

Geri
Üst