Tüm Platformlar için Hızlı Uygulama Geliştirme Kitap Yayın Süreci
Kitap gözden geçirilmek üzere BTG (Bilgi ve Teknoloji Grubu) 'na gönderildi. 05.10.2018-14:10
BTG (Bilgi ve Teknoloji Grubu) tarafından iki sayfalık bir reklam tasarımı bekleniyor. 08.10.2018 - 15:30
Kitap basım talebi değerlendirilmek üzere matbaaya bildirildi. Matbaadan basım süreci hakkında bilgi bekleniyor. 15.10.2018 - 15:34

Konuyu Paylaş : facebook gplus twitter

Konuyu Oyla:
  • Derecelendirme: 4/5 - 2 oy
  • 1
  • 2
  • 3
  • 4
  • 5
MySQL Join Kullanımları
#1
PQpam8.jpg


İnner Join

İnner Join birden fazla tablolardaki verileri eşleştirerek tek sorguda ver çekmek için kullanılır,
Database'de bir veriyi her tabloda tekrarlamak yerine genelde her tabloyu birbirine id'ler ile bağlarız. 

Bu işlem şuna benzer, Tüm Ekmeğin arasına tüm domates ve tüm salatalık koyup yemek gibi.. halbuki tüm bu malzemeleri 4'e bölüp acıktıkça yesek daha iyi olmaz mı ?
Delphi de de aslında işlemlerimiz böyle bir unite tüm kodları yazmak yerine, daha sağlıklı kodlama için işlemlerimizi procedure'lere function'lara ünitlere ayırırız tümünü birden değil de gerektikçe çağırırırız...

Örneğin bir musteri tablomuz var, bir de islem tablomuz, müşteri üzerinden yapılan her işlemi, islem tablosunda tutuyoruz.  Bir islem raporu almamız gerektiğinde bu raporda musteri bilgileri ni de görmek ister isek ki isteriz, ya her islem kaydında müşteri bilgilerini de islem tablosuna yazacağız ismi, tc'si,vs.. ki fazladan fiedl ekleyeceğiz, database gereksiz şişmesi beraberinde gelecek. veya islem tablosuna sadece müsteri id sini kaydedeceğiz. 

Örneklerle daha anlaşılır olur herhalde, kullandığımız canlı tablolardan bir örnek ile gidelim...
iki tablomuz var birinde illeri, diğerinde ilçeleri tutuyoruz ortak noktamız plaka kodları,

SELECT 
 il.kod AS plaka,
 il.ad AS `İL`,
 ilce.ad AS `İLCE`
FROM
 il
 INNER JOIN ilce ON (il.kod = ilce.kod)

PQ5vnd.png





Left Join

İnner Joinde birden fazla tablolardaki verileri eşleştirerek tek sorguda ver çekiyorduk, inner join kullanımında her iki tablodan iki parametreyi eşleştirerek aldığımızda, eğer ikinci tabloda ayni id'den eşleştirilebilecek bir veri var ise getiriyordu. yok ise sorgu cevabında o kayıt hiç gözükmüyordu.

Left Joinde ise ilk tablomuzda veri var ama ikinci veya üçüncü tablomuzda eşleşecek veri yok ise ,fakat yinede sorgularda gözükmesini istiyor isek kullanılır. Alttaki örnek daha açıklayıcı olacaktır.

iki tablomuz var birinde illeri, diğerinde ilçeleri tutuyoruz ortak noktamız plaka kodları,

SELECT 
 il.kod AS plaka,
 il.ad AS `İL`,
 ilce.ad AS `İLCE`
FROM
 il
 INNER JOIN ilce ON (il.kod = ilce.kod)

INNER JOIN kullandığımda, YOZGAT'ın plakası ile eşleşen ilce tablosunda bir kayıt bulunmadığı için hiç gösterilmedi.

PQ5vnd.png



SELECT 
 il.kod AS plaka,
 il.ad AS `İL`,
 ilce.ad AS `İLCE`
FROM
 il
 LEFT JOIN ilce ON (il.kod = ilce.kod)

LEFT JOIN kullandığımda, YOZGAT'ın plakası ile eşleşen ilce tablosunda bir kayıt bulunmamasına rağmen ilimiz sorguda geldi ama değer Null

gXkj20.png



Eğer sadece ikinci tablomuzda eşleşecek verisi olmayan illeri listelemek ise amacımız imdadımıza is NULL yetişiyor.

Kullanımı,
SELECT
 il.kod AS plaka,
il.ad AS `İL`,
ilce.ad AS `İLCE`
FROM
il
LEFT JOIN ilce ON (il.kod = ilce.kod)
WHERE ilce.kod is NULL

Sonuç,
ZY7kmZ.png





Right Join

Left Joinin tam tersi, 

Left Joinde, ilk tablomuz (il) olan il'de var olup, ikinci tablomuzda eşleşen (ilce) olmasa da illerimizi dökebiliyorduk
Right Joinde ise il'i olmayan ilçeleri de listeleyebiliyoruz. ilk tablomuzda bir eşleşecek karşılığı olmayan, ikinci tablomuzdaki kayıtları da dökebilmemize olanak sağlıyoruz.


Örnek; Kullanımı Üstteki kodumuzun aynısı LEFT'i silip RIGHT yazdık ve sonuç.

SELECT
il.kod AS plaka,
il.ad AS `İL`,
ilce.ad AS `İLCE`
FROM
il
RIGHT JOIN ilce ON (il.kod = ilce.kod)


E358dD.png


Eğer sadece ilk tablomuzda eşleşecek verisi olmayan ilçeleri listelemek ise amacımız imdadımıza yine is NULL yetişiyor.

Kullanımı,
SELECT
 il.kod AS plaka,
il.ad AS `İL`,
ilce.ad AS `İLCE`
FROM
il
RIGHT JOIN ilce ON (il.kod = ilce.kod)
WHERE il.kod is NULL

Sonuç,

qEPMrD.png



Görüş ve Önerilerinize açığım...
Devamı gelecek...
Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Kuvvete dayanamayan adalet aciz, 
Adalete dayanamayan kuvvet zalimdir.
WWW
Cevapla
#2
Merhaba,
Güzel bir çalışma olmuş,teşekkürler.
Devamını dört gözle bekliyorum.
While true do; Hayat döngüsü, kısır değildir! Yapılan bir yanlış, o döngünün dışına çıkmanızı sağlayacaktır.
WWW
Cevapla
#3
(12-07-2017, Saat: 09:24)yhackup Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
(11-07-2017, Saat: 16:30)uparlayan Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Giriş yap veya Üye OlEyvallah , Smile   gitmeyelim de, "LEFT OUTER JOIN"e orada değinilmemiş

O halde altına yazınız ki yazıyı geliştireyim. bu tip konularda sessiz kalmayınız.

LEFT OUTER JOIN ve RIGHGT OUTER JOIN ile ilgili şu (aşağıdaki) linki kullanabilirsiniz...

Linkleri Görebilmeniz İçin Giriş yap veya Üye Ol
Peyami Safa: "Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır". 
Can Yücel: "Toprak gibi olmalısın! Ezildikçe sertleşmelisin! Seni ezenler sana muhtaç kalmalı! Hayatı sende bulmalı."
Cevapla

Konuyu Paylaş : facebook gplus twitter



Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  MySQL vs MariaDB. Hangisi tercih edilmeli? uparlayan 4 478 18-06-2018, Saat: 15:14
Son Yorum: vkamadan
  MySQL - SQL Tablo Kontrolü Halil Han Badem 3 291 26-05-2018, Saat: 13:11
Son Yorum: Halil Han Badem
  Soru : MySQL Veritabanı' nda Explode İşlemi Nasıl Yapılır mad85 9 700 22-03-2018, Saat: 21:48
Son Yorum: uparlayan
  MySQL SP recover.. mcuyan 6 503 06-01-2018, Saat: 17:07
Son Yorum: mcuyan
Question MySQL ve MsSQL Md5 Fonksiyon Sonuçları Eşleşmiyor frmman 6 589 22-12-2017, Saat: 09:25
Son Yorum: frmman



Konuyu Okuyanlar: 1 Ziyaretçi