INNER JOIN, LEFT JOIN, RIGT JOIN Methodu.
ilişkisel sorgular da hayati öneme sahip sorgulardır. Bu sorgularımızı da kendi fonksiyonumuz ile kolaylaştırıcağız. Bundan önce phpmyadmin alanına gidin ve aşağıdaki tabloyu oluşturun.
Şimdi database.php sınıfımızı açıyoruz ve en altına aşağıdaki kodlarımızı yazıyoruz.
Şimdi models dizini içerisindeki user.php sınıfımızı açıyoruz ve içerisindeki kodları aşağıdaki kodlar ile değiştiriyoruz.
Şimdi controllers dizini içerisindeki profile.php sınıfımızı açıyoruz ve içerisindeki users() method kodlarını aşağıdaki kodlar ile değiştiriyoruz.
Ekran çıktısı:
Sıradaki sorgu methodumuz ise LEFT JOIN sorgu methodunu yazmak. Burada database.php sınıfımız içerisinde yer alan, Join() methoduna else if ekleyerek bir kontrol daha ekleyeceğiz. Burada eğer $join_ismi parametresine LEFT JOIN gelirse, bizim else if kontrol blogundaki $join_ismi == "LEFT JOIN" alanındaki sorgumuz devreye girecek. Bunun için ilgili Join() fonksiyonumuza if else blogu içerisinde aşağıdaki örnekte olduğu gibi kodlarımızı ekleyelim.
Daha sonra models dizimi içerisindeki user.php sınıf dosyamızı açıyoruz, buradaki kodumuza sadece ek bir parametre vereceğiz ama yine de kodun tamamını aşağıda paylaşıyoruz.
profile.php alanında zaten kodlarımız tanımlı, ilgili url'i
Sıradaki sorgu methodumuz ise RIGHT JOIN sorgu methodunu yazmak. Bu sorgu da LEFT JOIN sorgusunun hemen hemen aynısı olacak. Tek farkı LEFT JOIN olan yerleri RIGHT JOIN değiştirmek. Burada database.php sınıfımız içerisinde yer alan, Join() methoduna bir else if blogu daha ekleyerek bir kontrol daha ekleyeceğiz. Burada eğer $join_ismi parametresine RIGHT JOIN gelirse, bizim else if kontrol blogundaki $join_ismi == "RIGHT JOIN" alanındaki sorgumuz devreye girecek. Bunun için ilgili Join() fonksiyonumuza if else blogu içerisinde aşağıdaki örnekte olduğu gibi kodlarımızı ekleyelim.
Daha sonra models dizini içerisindeki user.php sınıf dosyamızı açıyoruz, buradaki kodumuz da yapmamız gereken şey sadece LEFT JOIN yazan yeri RIGTH JOIN olarak değiştirmek biz yine de kodun tamamını aşağıda paylaşıyoruz.
profile.php alanında yine aynı şekilde zaten kodlarımız tanımlı, ilgili url'i
Sıradaki işlemimiz INNER JOIN sorgularında Alias kullanımı. Aliaslar sütunlara takma isim vermemize yarayan komutlardır. Aşağıdaki alias kullanımında join methodunu değilde, genelSorgu() methodu ile kullandığımıza dikkat ediniz. models dizini içerisindeki user.php sınıf dosyasını açınız ve içindeki kodları aşağıdaki kodlar ile değiştiriniz.
profile.php ilgili url'i
Alias kullanımı ile alakalı bir örnek kod daha bırakmak istiyorum. Burada da tüm iki tablodaki ürünlerin ve kime ait oldukları başarılı bir şekilde sorgulanmakta. alias kullanımı join işlemlerinde oldukça önemlidir. Aksi halde sorgu da bir karışıklık olabilir. Bu yüzden bu tür alias atamalarında kesinlikle bir hata ile karşılaşmazsınız. Aşağıdaki sorguya bakabilirsiniz.
Ekran çıktısı:
ilişkisel sorgular da hayati öneme sahip sorgulardır. Bu sorgularımızı da kendi fonksiyonumuz ile kolaylaştırıcağız. Bundan önce phpmyadmin alanına gidin ve aşağıdaki tabloyu oluşturun.
Şimdi database.php sınıfımızı açıyoruz ve en altına aşağıdaki kodlarımızı yazıyoruz.
PHP:
/*
* JOIN Sorgu Methodu
*/
public function Join($tablo1, $tablo2, $kosul, $join_ismi = "")
{
if(empty($join_ismi)){
$this->Sorgu = $this->db->prepare("SELECT * FROM " . $tablo1 . " INNER JOIN " . $tablo2 . " ON " . $kosul);
return $this->Sorgu->execute();
}
}
Şimdi models dizini içerisindeki user.php sınıfımızı açıyoruz ve içerisindeki kodları aşağıdaki kodlar ile değiştiriyoruz.
PHP:
<?php
class User extends Database
{
public function JoinIslemi()
{
$this->Join("users", "urunler", "users.id = urunler.id");
$sonuclar = $this->tumKayitlar();
echo "<pre>";
print_r($sonuclar);
echo "</pre>";
}
}
?>
Şimdi controllers dizini içerisindeki profile.php sınıfımızı açıyoruz ve içerisindeki users() method kodlarını aşağıdaki kodlar ile değiştiriyoruz.
PHP:
public function user()
{
$users = $this->model("user");
$users->JoinIslemi();
$this->view("users");
}
Ekran çıktısı:
Sıradaki sorgu methodumuz ise LEFT JOIN sorgu methodunu yazmak. Burada database.php sınıfımız içerisinde yer alan, Join() methoduna else if ekleyerek bir kontrol daha ekleyeceğiz. Burada eğer $join_ismi parametresine LEFT JOIN gelirse, bizim else if kontrol blogundaki $join_ismi == "LEFT JOIN" alanındaki sorgumuz devreye girecek. Bunun için ilgili Join() fonksiyonumuza if else blogu içerisinde aşağıdaki örnekte olduğu gibi kodlarımızı ekleyelim.
PHP:
public function Join($tablo1, $tablo2, $kosul, $join_ismi = "")
{
if(empty($join_ismi)){
$this->Sorgu = $this->db->prepare("SELECT * FROM " . $tablo1 . " INNER JOIN " . $tablo2 . " ON " . $kosul);
return $this->Sorgu->execute();
}else if($join_ismi == "LEFT JOIN"){
$this->Sorgu = $this->db->prepare("SELECT * FROM " . $tablo1 . " LEFT JOIN " . $tablo2 . " ON " . $kosul);
return $this->Sorgu->execute();
}
}
Daha sonra models dizimi içerisindeki user.php sınıf dosyamızı açıyoruz, buradaki kodumuza sadece ek bir parametre vereceğiz ama yine de kodun tamamını aşağıda paylaşıyoruz.
PHP:
<?php
class User extends Database
{
public function JoinIslemi()
{
$this->Join("users", "urunler", "users.id = urunler.id", "LEFT JOIN");
$sonuclar = $this->tumKayitlar();
echo "<pre>";
print_r($sonuclar);
echo "</pre>";
}
}
?>
profile.php alanında zaten kodlarımız tanımlı, ilgili url'i
http://localhost/netron/profile/user
çalıştırıyoruz ve aşağıdaki örnekte olduğu gibi LEFT JOIN sorgumuzun da başarılı bir şekilde çalıştığını görebiliriz.Sıradaki sorgu methodumuz ise RIGHT JOIN sorgu methodunu yazmak. Bu sorgu da LEFT JOIN sorgusunun hemen hemen aynısı olacak. Tek farkı LEFT JOIN olan yerleri RIGHT JOIN değiştirmek. Burada database.php sınıfımız içerisinde yer alan, Join() methoduna bir else if blogu daha ekleyerek bir kontrol daha ekleyeceğiz. Burada eğer $join_ismi parametresine RIGHT JOIN gelirse, bizim else if kontrol blogundaki $join_ismi == "RIGHT JOIN" alanındaki sorgumuz devreye girecek. Bunun için ilgili Join() fonksiyonumuza if else blogu içerisinde aşağıdaki örnekte olduğu gibi kodlarımızı ekleyelim.
PHP:
public function Join($tablo1, $tablo2, $kosul, $join_ismi = "")
{
if(empty($join_ismi)){
$this->Sorgu = $this->db->prepare("SELECT * FROM " . $tablo1 . " INNER JOIN " . $tablo2 . " ON " . $kosul);
return $this->Sorgu->execute();
}else if($join_ismi == "LEFT JOIN"){
$this->Sorgu = $this->db->prepare("SELECT * FROM " . $tablo1 . " LEFT JOIN " . $tablo2 . " ON " . $kosul);
return $this->Sorgu->execute();
}else if($join_ismi == "RIGHT JOIN"){
$this->Sorgu = $this->db->prepare("SELECT * FROM " . $tablo1 . " LEFT JOIN " . $tablo2 . " ON " . $kosul);
return $this->Sorgu->execute();
}
}
Daha sonra models dizini içerisindeki user.php sınıf dosyamızı açıyoruz, buradaki kodumuz da yapmamız gereken şey sadece LEFT JOIN yazan yeri RIGTH JOIN olarak değiştirmek biz yine de kodun tamamını aşağıda paylaşıyoruz.
PHP:
<?php
class User extends Database
{
public function JoinIslemi()
{
$this->Join("users", "urunler", "users.id = urunler.id", "RIGHT JOIN");
$sonuclar = $this->tumKayitlar();
echo "<pre>";
print_r($sonuclar);
echo "</pre>";
}
}
?>
profile.php alanında yine aynı şekilde zaten kodlarımız tanımlı, ilgili url'i
http://localhost/netron/profile/user
çalıştırıyoruz ve aşağıdaki örnekte olduğu gibi RIGHT JOIN sorgumuzun da başarılı bir şekilde çalıştığını görebiliriz.Sıradaki işlemimiz INNER JOIN sorgularında Alias kullanımı. Aliaslar sütunlara takma isim vermemize yarayan komutlardır. Aşağıdaki alias kullanımında join methodunu değilde, genelSorgu() methodu ile kullandığımıza dikkat ediniz. models dizini içerisindeki user.php sınıf dosyasını açınız ve içindeki kodları aşağıdaki kodlar ile değiştiriniz.
PHP:
<?php
class User extends Database
{
public function JoinIslemi()
{
$this->genelSorgu("SELECT users.id as user_id, urunler.id as urunler_id FROM users INNER JOIN urunler ON users.id = urunler.id");
$sonuclar = $this->tumKayitlar();
echo "";
print_r($sonuclar);
echo "";
}
}
?>
profile.php ilgili url'i
http://localhost/netron/profile/user
çalıştırıyoruz ve aşağıdaki örnekte olduğu gibi alias kullandığımız sorgumuzun da başarılı bir şekilde çalıştığını görebiliriz.Alias kullanımı ile alakalı bir örnek kod daha bırakmak istiyorum. Burada da tüm iki tablodaki ürünlerin ve kime ait oldukları başarılı bir şekilde sorgulanmakta. alias kullanımı join işlemlerinde oldukça önemlidir. Aksi halde sorgu da bir karışıklık olabilir. Bu yüzden bu tür alias atamalarında kesinlikle bir hata ile karşılaşmazsınız. Aşağıdaki sorguya bakabilirsiniz.
PHP:
<?php
class User extends Database
{
public function JoinIslemi()
{
$this->genelSorgu("SELECT users.id as user_id,
users.isim as users_isim,
users.adres as users_adres,
urunler.id as urunler_id,
urunler.urun_adi as ur_adi,
urunler.urun_fiyati as ur_fiyati
FROM users INNER JOIN urunler ON users.id = urunler.id");
$sonuclar = $this->tumKayitlar();
echo "<pre>";
print_r($sonuclar);
echo "</pre>";
}
}
?>
Ekran çıktısı: