İstediğiniz Tablodaki İstediğiniz Alanları Görme
SORU:
Select * from dbo_stkfis as fis
LEFT JOIN dbo_stkhar as har ON fis.STKFISREFNO=har.STKHARREFNO
where fis.STKFISKAYNAK=5 AND fis.STKFISCALFLAG=1
yukarıdaki sorguda fiş listelerini alıyorum, join yaptığım tabloyu ise sadece arama yapmak için kullanmak istiyorum. Yani ( where fis.STKFISKAYNAK=5 AND fis.STKFISCALFLAG=1 AN har.CARIKOD=”SERDAR” ) gibi. Bu soguda dbo_stkhar daki
verileri görmek istemiyorum. Bunun imkanı varmı? Sadece dbo_stkfis daki verileri görmek istiyorum.
İkinci Sorum : join yaptığım tabloda limit 1 işlemini nasıl uygularız.
Kolay gelsin
CEVAP:
SELECT kısmından sonra yazılan kısım ilgili sorgudaki gösterim kısmıdır. Bu gösterimleri aşağıdaki gibi çeşitli örneklerle sunmaya çalışacağım.
Tablodaki tüm kayıtları listeleme
SELECT * FROM TABLO_ADI
Tablodaki belirli kayıtları listeleme
SELECT AD,SOYAD,CINSIYET FROM TABLO_ADI
JOIN yapılan tablolardaki belli bir tablodaki tüm kayıtları listeleme
SELECT a.* FROM TABLO_BIR as a JOIN TABLO_IKI as b ON a.ID = b.ID
JOIN yapılan tablolardaki belli bir tablodaki belirli kayıtları listeleme
SELECT a.AD,a.SOYAD,a.CINSIYET FROM TABLO_BIR as a JOIN TABLO_IKI as b ON a.ID = b.ID
Sizin sorunuza göre istenilen cevap
Select fis.* from dbo_stkfis as fis LEFT JOIN dbo_stkhar as har ON fis.STKFISREFNO=har.STKHARREFNO where fis.STKFISKAYNAK=5 AND fis.STKFISCALFLAG=1
İkinci Sorum : join yaptığım tabloda limit 1 işlemini nasıl uygularız.
Join yapılan tabloda eğer iki tablo arasında birleştirecek bir alan varsa örnek olarak aşağıdaki gibi bir limitleme uygulamayabilirsiniz.
SELECT aa.ID,aa.AD,aa.SOYAD,bb.UCRET FROM TABLO_BIR aa LEFT JOIN (SELECT aa.ID,aa.b.UCRET FROM TABLO_IKI b ORDER BY b.UCRET_TARIH DESC LIMIT 1) bb ON aa.ID = bb.ID LIMIT 10;
Volkan bey selam,
Ben Columns olarak değil, Found rows olarak görmek istemiyorum. Yani fiş listemde
referans numaralarım auto increment, ben sizin bu sorguyu çalıştırdığım bulduğu
diğer tablodaki kayıtlarıda listelediği için kayıt sayısı artıyor.
mesela fiş listem normalde
id ref no tarih (böyle istiyorum)
1 1 07.01.2015
2 2 08.01.2015
2 3 09.01.2015
join yapınca (böyle istemiyorum)
id refno tarih
1 1 07.01.2015
2 1 07.01.2015
3 1 07.01.2015
4 2 08.01.2015
5 2 08.01.2015
6 2 08.01.2015
7 2 08.01.2015
8 3 09.01.2015
join kullanmamım amacı, hareket dosyasında ki bazı kayıtları bulmam gerekiyor.
kolay gelsin
Herhangi bir dosya paylaşım sitesine ilgili sqlleri yüklerseniz onun üzerinden doğrulamayı yapmayı çalışayım daha iyi sonuç almak açısından.
Volkan bey selamlar,
buyrun kodlar aşağıdadır. kolay gelsin
http://www.vyz.gen.tr/?attachment_id=397
Select * from dbo_stkfis as fis
LEFT JOIN dbo_stkhar ON fis.STKFISREFNO=STKHARREFNO
LEFT JOIN dbo_carkart ON fis.STKFISCARKOD=dbo_carkart.CARKOD
where fis.STKFISKAYNAK=5 AND fis.STKFISCALFLAG=1
Merhaba Serdar Bey,
Aşağıdaki şekilde sqli dener misiniz tam istediğiniz şekilde mi acaba?
SELECT fis.id,fis.STKFISREFNO,stk.STKHARREFNO
FROM dbo_stkfis AS fis
LEFT JOIN ( SELECT STKHARREFNO FROM dbo_stkhar stk GROUP BY stk.STKHARREFNO ) stk ON stk.STKHARREFNO = fis.STKFISREFNO
WHERE fis.STKFISKAYNAK=5 AND fis.STKFISCALFLAG=1
Teşekkür ederim volkan bey,
hemen deneyeceğim.
Volkan bey selam,
ancak deneme şansın oldu. teşekkür ederim ilgilendiğiniz için.
GROUP BY har.SATHARREFNO ) yapmanızın amacı nedir acaba?
Çünkü bu sefer hareket tablosundaki kayıtlardan sadece bir tanesini veriyor. bunu kaldırdığım zaman sorun olmuyor.
Volkan bey selam,
neden GROUP BY har.SATHARREFNO ) yaptığınızı anladım. Fakat bunu kullandığım zaman
dbo_stkhar tablosunda gruplama yaptığı için gene aradıklarımı bulamıyorum malesef.