--CROSS JOIN...:Tablodaki tüm kayıtları birbiri ile --kartezyen çarpım yaparak birbiri ile ilişkilendirir --------------------------------------------------- --soru...:Hangi personel hangi ürünlerden satış yapmamıştır. select p.Adi,u.UrunAdi from Personeller p cross join Urunler u --buraya kadar yaptıgımız kartezyen çarpımdır. except--hangi personel hangi üründen satış yapmıştır. select p.Adi, u.UrunAdi from Personeller p left join Satislar s on s.PersonelID=p.PersonelID left join SatisDetay sd on sd.SatisID=s.SatisID left join Urunler u on u.UrunID=sd.UrunID group by p.Adi , u.UrunAdi---------------------------------------------------
--soru...: Hangi tedarikçiden hangi ürün hiç tedarik edilmemiştir. select t.SirketAdi,u.UrunAdi from Urunler u cross join Tedarikciler t except--aşagıda hangi tedarikçi hangi ürünü tedarik etmiştirin cevabı select t.SirketAdi,u.UrunAdi from Tedarikciler t left join Urunler u on t.TedarikciID=u.TedarikciID group by t.SirketAdi,u.UrunAdi---------------------------------------------------
--Hangi ürün hangi müşteriye hiç satılmamıştır. select u.UrunAdi,m.MusteriAdi from Urunler u cross join Musteriler m except --Hangi ürün hangi müsteriye satılmıştır. select u.UrunAdi,m.MusteriAdi from Urunler u left join SatisDetay sd on u.UrunID=sd.UrunID left join Satislar s on s.SatisID=sd.SatisID left join Musteriler m on m.MusteriID=s.MusteriID group by u.UrunAdi,m.MusteriAdi
Bu blog yazılarımda temelde c# ve ERP olmak üzere c, c++, java ,veri yapıları, algoritmalar , yazılım ve bilişim sektörüne yönelik öğrendiğim faydalı ve pratik bilgileri sizlere aktarmaya çalışacağım.
2018/02/01
CROSS JOIN
SQL OUTER JOIN
--OUTER JOIN --outer join(dış birleşim)...:İlişkili tablolardaki null --kayıtlar dahil bütün kayıtalrı getirir. --3 Çeşit outer join(dış birleşim) vardır. --1. si left outer join(sol dış birleşim)..:left join de soldaki --null dahil bütün kayıtlar getirilir.Diger tablonun ise sadece ilişkili --kısımlarını getirir. select * from Satislar left join Musteriler on Satislar.MusteriID=Musteriler.MusteriID --2.si right outer join(sağ dış birleşim)...:right joinde
--sağdaki tablonun null dahil --bütün degerlerini getirir. Diger tablonun ise sadece ilişkili verileri gelir. select * from Satislar right join SatisDetay on Satislar.SatisID=SatisDetay.SatisID --3.sü ise full outer join...: Her iki tabloda null
--kayıtlar dahil bütün kayıtları getirir. select * from Urunler full outer join Kategoriler on Urunler.KategoriID=Kategoriler.KategoriID --soru..:Kesişim kümesi hariç diger alanları listele select * from Urunler full outer join Kategoriler on Kategoriler.KategoriID=Urunler.KategoriID where Kategoriler.KategoriID IS NULL OR Urunler.KategoriID IS NULL --Hangi tedarikçiden toplamda kaç dolarlık ürün tedarik edilmiştir. --(tüm tedarikçiler gelmelidir.) select Tedarikciler.TedarikciID,sum(Urunler.Fiyat)
from Tedarikciler left join Urunler on- Urunler.TedarikciID=Tedarikciler.TedarikciID group by Tedarikciler.TedarikciID --Hiç satış yapılmayan müşterilerimizi listeleyen sorguyu yazınız. select * from Musteriler left join Satislar on Musteriler.MusteriID=Satislar.MusteriID where Satislar.SatisID Is null --nakliye edilmeyen siparişleri listeleyiniz. select * from Satislar left join Nakliyeciler on Nakliyeciler.NakliyeciID=Satislar.ShipVia where Satislar.ShipVia IS NULL select * from Nakliyeciler select * from Satislar --Hiç nakliye yapmayan nakliyecileri listeleyen sorguyu yazınız. select * from Nakliyeciler left join Satislar on Nakliyeciler.NakliyeciID=Satislar.ShipVia where Satislar.ShipVia IS NULL --Hangi personel hangi üründen hiç satış yapmamıştır. select Urunler.UrunAdi,Personeller.adi from Personeller left join Satislar on Personeller.PersonelID=Satislar.PersonelID left join SatisDetay on Satislar.SatisID=SatisDetay.SatisID left join Urunler on Urunler.UrunID=SatisDetay.UrunID group by Urunler.UrunAdi,Personeller.adi
2018/01/25
Sql inner join
--JOİN...: İlişkili birden fazla tabloyu --birleştirmek için kullanılan bir yöntemdir. --3 Çeşit join vardır.İnner join, outer join, cross join --İnner join...: Tablodaki NULL olmayan kayıtları listeler select UrunAdi, fiyat,Stok,KategoriAdi,Tanimi from Urunler inner join kategoriler on Urunler.KategoriID=Kategoriler.KategoriID --Ürünleri ve sadece şirket isimleriyle ile birlikte listeleyiniz select Urunler.*,SirketAdi from Urunler inner join Tedarikciler on
Tedarikciler.TedarikciID=Urunler.TedarikciID --Yapılan satışları müşteri adı sayadı ve personel adı,
-- soyadı ile birlikte listeleyiniz. select Satislar.*,(MusteriAdi+MusteriUnvani) 'musteri ad soyad ',
(Adi+SoyAdi)'personel ad soyad' from Satislar inner join
Musteriler on Satislar.MusteriID=Musteriler.MusteriID inner join Personeller on Personeller.PersonelID=Satislar.PersonelID --Hangi personel hangi üründen taplamda kaç dolarlık satış yapmıştır --(personel ürünler satisdetay satis) --ilk iş bunları bir birine joinleyelim select Personeller.Adi+ ' '+Personeller.SoyAdi as personel,
Urunler.UrunAdi,SUM(SatisDetay.Adet*SatisDetay.Fiyat
*(1-SatisDetay.Indirim)) from Satislar
inner join Personeller on Satislar.PersonelID=Personeller.PersonelID inner join SatisDetay on Satislar.SatisID=SatisDetay.SatisID inner join Urunler on Urunler.UrunID=SatisDetay.UrunID group by Urunler.UrunAdi,Personeller.Adi+' '+Personeller.SoyAdi --hangi personel hangi kategoriden toplam kaç adet ürün satışı yapmıştır.
--(Personel,satis,satisdetay,kategori) select (p.Adi+p.SoyAdi) as 'Personel adı ve soyadı' ,k.KategoriAdi, sum(sd.Adet) as 'sattıgı adet' from Satislar s inner join Personeller p on p.PersonelID=s.PersonelID inner join SatisDetay sd on sd.SatisID=s.SatisID inner join Urunler u on u.UrunID=sd.UrunID inner join Kategoriler k on k.KategoriID=u.KategoriID group by p.Adi+p.SoyAdi,k.KategoriAdi --Nakliyeci şirket adı 'speedy Express' olan nakliyeci, -- satış fiyatı 15 dolardan yüksek kaç adet ürün taşımıştır.
--(nakliyeciler,satislar,satisdetay,) select n.SirketAdi , SUM(sd.Adet) from Satislar s inner join Nakliyeciler n on n.NakliyeciID=s.ShipVia inner join SatisDetay sd on sd.SatisID=s.SatisID where n.SirketAdi='Speedy Express' and sd.Fiyat >15 group by n.SirketAdi
2018/01/22
SQL ALT SORGULAR
--ALT SORGULAR 1 (İç içe sorgular) --1.Kullanım şekli:Select ile from arasınabir sorgu yazılır. --Bu sorgu geriye sadece bir sütun döndürür. Select *,(select KategoriAdi from Kategoriler where KategoriID=Urunler.KategoriID) 'kategori adı' from Urunler --Urunler tablosunu tedarikçi adı ile birlikte listeleyiniz. select *,(select SirketAdi from Tedarikciler where TedarikciID=Urunler.TedarikciID) 'ŞİRKETADLARI' from Urunler --Ürünler tablosunu tedarikçi adı ve kategori adı, ürün adı, fiyat ve stok -- bilgileri ile birlikte listeleyiniz. select UrunAdi,Fiyat,Stok,(select KategoriAdi from Kategoriler where KategoriID=Urunler.KategoriID) ' Kategori Adı',(Select SirketAdi from Tedarikciler where TedarikciID=Urunler.TedarikciID)'Tedarikçi Adı' from Urunler --Satışlar tablosunu müşteri adı unvanı(aynı hücrede), personel adı soyad(aynı hücre) -- ile birlikte listeleyiniz. select *,(select MusteriAdi+' '+MusteriUnvani from Musteriler where MusteriID=Satislar.MusteriID) 'Müşteri Adı Soyadı', (select Adi+' '+SoyAdi from Personeller where PersonelID=Satislar.PersonelID) 'Personel Adı Soyadı' from Satislar --Ürünler ile birlikte ürünün toplam satış adedi bilgisinide gösteren sorguyu yazınız. select *,(select SUM(Adet) from SatisDetay where UrunID=Urunler.UrunID) 'ADET' from Urunler --Yapılan satışları maximum satış fiyatı bilgisi ile listeleyiniz select *,(select MAX(Fiyat) from SatisDetay where SatisID=Satislar.SatisID)'MAXFİYAT' from Satislar --ürünleri ürüne uygulanan maximum indirim yüzdesi bilgisi ile birlikte listeleyen --sorguyu yazınız. select *,(select MAX(Indirim) from SatisDetay where UrunID=Urunler.UrunID) 'max indirim' from Urunler --Yapılan satışları toplam satış tutarları ile birlikte listeleyen sorguyu yazınız |
Kaydol:
Kayıtlar (Atom)