Php ile İki Tabloyu Birleştirerek Veri Çekme İşlem Yapma

Veri tabanı işlemlerinde şimdiye kadar sadece bir tablodan veri alımı yaptık. Çoğunlukla php dilini kullanarak hazırlanan projeler tek taraflı işlemler yapılmaktadır. Bu işlemler genelde şu tablodan veri çek, ekrana yazdır ya da şununla sorgula gibi işlemlerde her seferinde tek tablodan gelen verileri al şeklindeki sorgulardır. Bu basit sorgulardan sonra ya iki tablodan gelen verileri birleştirip veri çekmemiz gerekirse? İşte o zaman join sahneye gelecek ve iki tablodan veri çekme işlemimiz gerçekleştirecek.

Join işlemi ile iki veya daha fazla tablodan parçalar alarak yeni bir tablo oluşturmamızı sağlar. Buradaki kastettiğim tablo fiziksel bir şey değildir. Sözel kısmı bitirerek örnek ile bu yapacağımız işlemi bir açıklayalım.

Basit örneğimiz için şöyle minik bir veri tabanı oluşturdum. Veri tabanında diller ve kullanıcıların kayıtlarının tutulduğu iki adet tablo var. Kayıtta kullanıcı bilgisinde bildiği dil hanesine diller tablosundaki dilin id'si eklenmiş. Kullanıcının hangi dili bildiğini görebilmek için önce kullanıcının bildiği dili almak sonrasında ise o id'nin hangi isme ait olduğunu bulmak için 2 sorgu yapmamız gerekecekti. Şimdi bunu join ile tek sorguda karşılaştıralım ve ekrana basalım.

Öncelikle oluşturduğum veri tabanı bilgileri şöyle;

Diller Tablosu


Kullanici Tablosu


Şimdi sorguyu yazalım ve sonrasında detaylı bir açıklama ile anlatayım.

<?php $sorgu = mysql_query("SELECT * FROM diller,kullanici WHERE diller.id = kullanici.diladi"); ?>

Yukarıdaki işlem ile 2 Tabloyu bağlayıp tek sonuç almış olduk. Şimdi gelin kafası karışanlara, tam olarak anlamayanlara detaylı bir biçimde anlatayım.

Select * From = Burada birleştirdiğimiz tabloda yer alan bütün verileri tara dedik. Aslında bunu yapmak çok saçma oldu. Böyle kullanım 2 tabloyu tam tarama yapacağından yavaşlık getirebilir. Bunun yerine şuraları tara diyerek kesin bir yer sorgu oluşturulabilir.

Diller,kullanici = Burada ise hangi tablolarda işlem yapılacağını söylüyoruz. Yani sorguda diller ve kullanici adlı tabloda bir sorgulama yapılacağı anlatılmaktadır.

Where = Buradaki koşul ile eşitlik sağlanan verilerin çekmesini sağlayacağız.

Diller.id = Bu kullanım; diller tablosundaki id değerini al demektedir.

Kullanici.diladi = Bu kullanım ise kullanıcılar tablosundaki diladi değerini al demektedir. Böylece diller = diladi eşitliği sağlanacaktır.

Şimdi iki tabloyu bağlamış olduk. Bir de bunu ekrana yazdırarak nasıl bir çıktıya sahip olacağımızı görelim.

Gelen veriler çoklu olarak geleceğinden dolayı while ile ekrana listeleme yapıyoruz. Ekrana çıktısını istediğimiz değerler ise; Kullanıcı adı ve o kullanıcının bildiği dil şeklinde olacaktır. Kodları aşağıdaki gibidir;

<?php
while($row = mysql_fetch_array($sorgu)){
echo $row["isim"]."-".$row["dil"]."<br>";
}
?>

Yukarıdaki sorguda önemli olan değerler ekrana çıktısı verilen $row kısımlarıdır.

$row["isim"] değeri; Kullanici tablosundaki isim değeridir. Yani bu kullanım ile kullanici tablosundaki isimleri çekmektedir.

$row["dil"] değeri; diller tablosundaki dil değeridir.

Yukarıdaki minik örnek ile 2 tabloyu basit bir yöntem ile birleştirip tek bir sorguda kullanmış olduk. Çıktısı da aşağıdaki gibi olacaktır;

ibrahim-php
muhammed-html
cevdet-css
behzat-php
harun-html
hayalet-php

Bu işlem ile performans açısından daha etkili bir sistem hazırlamış olduk. Performans dışında kullanım olarak karmaşık yapılardan da kurtulmuş oluyoruz.

Bir sonraki derslerde bununla ilgili detaylara ve ince ayarlara ineriz artık.
- 05.10.2013 / 12:59:31 0

Sosyal Medya Paylaşım Alanı

Bunlarda İlginizi Çekebilir

13:16 Php Dersleri
13:25 Javascript

Javascript'te Koşul Belirtme İfadeleri | if ve else

Kategori: Javascript | 22.11.2013
8:04 jQuery Dersleri

jQuery appendTo Kullanımı

Kategori: jQuery Dersleri | 03.05.2013
9:49 Php Dersleri

Php Nesne Yönelimli Programlama | OOP Sınıfına Giriş

Kategori: Php Dersleri | 15.09.2015
3:59 jQuery Dersleri

jQuery Html ve Text metodlarının Kullanımı

Kategori: jQuery Dersleri | 03.05.2013

Yorum Listesi (4) # YorumYap

  • Life (13.10.2013 - 15:33:36)
    Güzel bir konuya değinmişsiniz, teşekkürler.
    Yalnız bir şey soracağım. Örnekdeki "diladi" sütununun tipi "int" mi olacak yoksa "varchar" mı?
  • ibrahim Çevrük (14.10.2013 - 16:52:35)
    tabi int kullanmak daha mantıklı. Sonuçta sayısal veri giriliyor buraya.
  • birisi (13.11.2013 - 10:54:55)
    dersleriniz gerçekten süper , sade kısa ve öz bir dille anlatıyorsunuz.
  • serhat (15.03.2014 - 04:59:42)
    Hoca harikasın sanırım stok programındaki ürün numaralarını hallediyorum Jquery'de destek lazım :)

Hadi Sende Yorum Yap!

Yorum Gönderilmiştir. Onaylandıktan Sonra Mesajınız Yayınlanacaktır.