|
SQL INNER JOIN Kullanımı
İki adet tablomuzdaki kayıtları belli bir kritere göre birleştirmek için INNER JOIN komutu kullanılır. Acces veritabanı programında kullanılan tablo arası ilişkileri gibidir.
INNER JOIN Kullanım Biçimi
SELECT alan_ad(lari)
FROM tablo1 INNER JOIN tablo2
ON tablo1.alan_adi=tablo2.alan_adi |
veya
SELECT alan_ad(lari)
FROM tablo1 JOIN tablo2
ON tablo1.alan_adi=tablo2.alan_adi |
NOT: INNER JOIN yerine sadece JOIN kullanılabilir.
Burada görüleceği üzere From ifadesi ile birinci tablomuzu ve ardından JOIN
(veya INNER JOIN) ile ikinci tablomuu belirtmiş oluyoruz. ON ile hangi alanların
eşitleneceği gösterilmektedir. Birinci tabloda olan bir kayıt ikinci tabloda
olmayabilir veya ikinci tabloda olan ir kayıt biirnci tabloda olmayabilir. Bu
durumda sadece belirtilen alanlarda eşit olan kayıtlar seçilir. Mesele id_no
alanına göre eşitleme yapılırsa birinci tabloda id_no alanında 1,2,3 kayıtları
ve ikinci tabloda id_no alanında 1,2,3,4,5 kayıtları varsa; bu kayıtlardan
sadece 1,2,3 olanlar işleme alınır. Her iki tabloda bulunan ortak kayıtlar
seçilir. Yani kesişim kümesi baz alınır.
Örnek Tablo Uygulaması:
Örnek olarak aşağıdaki gibi Müşteriler isimli tablomuz olsun.
id |
Adi_soyadi |
1 |
Salih
ESKİOĞLU |
2 |
Ayhan
ÇETİNKAYA |
3 |
Serkan
ÖZGÜREL |
4 |
İlhan
ÖZLÜ |
İkinci tablomuz olan Satışlar ise aşağıdaki gibi olsun.
id |
Satilan_mal |
Satis_fiyati |
1 |
Buzdolabi |
1200 |
1 |
LCD TV |
1800 |
2 |
LCD TV |
1750 |
1 |
Çamaşır
Makinesi |
950 |
Örnek1:
SELECT *
FROM Mutseriler JOIN Satislar
ON Musteriler.id=Satislar.id
Bu kodda iki tablodaki id alanları eşitlenmiş. id alanında ortak olan kayıtlar
seçilecek ve diğer kayıtlar dikkate alınmayacaktır. 3 ve 4 nolu id lere sahip
müşteriler çıktı kayıtlarında olmayacaktır. Çünkü Satışlar tablosunda bunlarla
iligli bir kayıt bulunmamaktadır.
Çıktısı:
id |
Adi_soyadi |
Satilan_mal |
Satis_fiyati |
1 |
Salih
ESKİOĞLU |
Buzdolabı |
1200 |
1 |
Salih
ESKİOĞLU |
LCD TV |
1800 |
2 |
Ayhan ÇETİNKAYA |
LCD TV |
1750 |
1 |
Salih ESKİOĞLU |
Çamaşır Makinesi |
950 |
Örnek2:
SELECT Adi_soyadi, Satilan_mal
FROM Musteriler JOIN Satislar
ON Musteriler.id=Satislar.id
Bu kod ile sadece adı soyadı ve satılan mal alanları seçilmiş. Gene aynı şekilde
id alanalr eşit olan kayıtlar işleme alınmış. Çıktıya dikkat edilirse id alanı
çıktı alanları arasında yoktur. Çünkü select ile ilgili alan belirtilmemiştir.
Çıktısı:
Adi_soyadi |
Satilan_mal |
Salih
ESKİOĞLU |
Buzdolabı |
Salih
ESKİOĞLU |
LCD TV |
Ayhan ÇETİNKAYA |
LCD TV |
Salih ESKİOĞLU |
Çamaşır Makinesi |
Örnek3:
SELECT Adi_soyadi, Satilan_mal, musteriler.id AS id_no
FROM Musteriler JOIN Satislar
ON Musteriler.id=Satislar.id
ORDER BY id_no ASC
Bu kodda Select ifadesinden sonra musteri tablosundaki id alanı AS ifadesi ile
özel tanım olarak belirtilmiştir. Yani SQL kodu içerisinde müşteri tablosunun id
alanı kısaca id_no olarak kullanılacaktır. AS için detaylı kullanım bilgisine
buradan ulaşabilirsiniz. ORDER BY ile seçilen kayıtlar id numarasına küçükten
büyüğe sıralanmıştır.
Çıktısı:
id_no |
Adi_soyadi |
Sehir |
1 |
Salih
ESKİOĞLU |
Buzdolabı |
1 |
Salih
ESKİOĞLU |
LCD TV |
1 |
Salih ESKİOĞLU |
Çamaşır Makinesi |
2 |
Ayhan
ÇETİNKAYA |
LCD TV |
|