Aynı Tabloya Join Bağlantısı Olur Mu?
SORU:
Merhabalar,
Aynı tablo üzerinde alış miktarlarını toplatıp gene aynı tablo da bulunan son alış
fiyatı ile çarpmak istiyorum. Fakat left veya inner join yaptığım zaman hata veriyor.
ANA TABLO (BAKİYEYİ HESAPLADIĞIM)
select *,
sum(if(STKHARTIPI=0,STKHARMIKTAR,0)+if(STKHARTIPI=1,STKHARMIKTAR,0)-if((STKHARTIPI=2) OR (STKHARTIPI=3),STKHARMIKTAR,0)) AS BAKIYE
from dbo_stkhar
LEFT JOIN dbo_stkkart ON STKHARSTKKOD=STKKOD
where STKHARCALFLAG=1 AND STKHARISLEMTIP=1 AND where BAKIYE > 0 group by STKHARSTKKOD
SON ALIŞ FİYATINI BULDUĞUM AYNI TABLO
select STKHARSTKKOD,STKHARNETFIYAT AS “NETFIYAT” from dbo_stkhar where STKHARTIPI=1 AND STKHARCALFLAG=1 AND STKHARISLEMTIP=1 order by STKHARTAR DESC LIMIT 1
İki sorguyu birleştirip önceki sorgudaki bakiye ile diğer sorgudaki NETFIYATI çarpmak istiyorum.
Kolay gelsin
CEVAP:
Aynı tabloya tabikide Join bağlantısı olmaktadır. Ama bu vermiş olduğunuz örnekte ayrı ayrı sorgulama yaparak işlem yapmanız sanırım daha mantıklı olacaktır.
Bu tabloda join yapmayı denedim, hata veriyor.
Evet sizin istediğiniz gibi bir sorguyla birleştirme işlemi olmayacaktır.
Ama genel anlamda aynı tabloya join bağlantısı yapılabilmektedir.
Peki şu mantıkta bir sorgu olurmu. Sadece bir alanı seçip alıp sonra onula çarpmak.
Join yapmak istemiyorum mesela.
select *,
BAKIYE * (select STKHARSTKKOD,STKHARNETFIYAT AS “NETFIYAT” from dbo_stkhar where STKHARTIPI=1 AND STKHARCALFLAG=1 AND STKHARISLEMTIP=1 order by STKHARTAR DESC LIMIT 1)
sum(if(STKHARTIPI=0,STKHARMIKTAR,0)+if(STKHARTIPI=1,STKHARMIKTAR,0)-if((STKHARTIPI=2) OR (STKHARTIPI=3),STKHARMIKTAR,0)) AS BAKIYE
from dbo_stkhar
LEFT JOIN dbo_stkkart ON STKHARSTKKOD=STKKOD
where STKHARCALFLAG=1 AND STKHARISLEMTIP=1 AND where BAKIYE > 0 group by STKHARSTKKOD