MySQL Komutları
SQL'e Giriş
SQL Nedir?
MySQL Kurmak
Komut Kullanımı
Veritabanı Oluşturmak
Tablo Oluşturmak
Veri Eklemek
Sorgulama Yapmak
Kalıp İfadelerle Sorgu (pattern)
Bağlaçlar (Operatörler)
Sıralama Yapmak
Çeşitli Fonksiyonlar
Sütunları Adlandırmak
Veri/Kayıt Güncellemek
Tarihlerle İşlem
Veri / Tablo / Veritabanı Silmek

İleri Düzey SQL
Birden Fazla Tablo Sorgulama
Sonuca Başka Bir Tabloyu Katmak
Matematiksel İşlemler
Veri Türleri
Tüm Komutlar

Bağlantılar
HTML Dersleri
JavaScript Dersleri
CSS Dersleri
ASP Dersleri
PHP Dersleri
MySQL Komutları
jQuery Dersleri
Venus Programlama

Ana Sayfa Bize Ulaşın

Birden Fazla Tablo Sorgulama



NOT: Eğer bir önceki bölümdeki dersler yararlı geldiyse ve sorun yaşamadan komut kullanımını öğrendiyseniz bu konular MySQL'de çok daha geniş bilgiler edinmenizi sağlayacaktır.

Tablolarımız birbiriyle ortaklaşa sonuç üretmek zorunda kalabilir. Örneğin bir forumda üyeler ve mesajlar adlı iki tablomuz olsaydı mesaj hangi üye tarafından atılmış bilgisini direkt mysql'den almamız gerekebilirdi. Eğer bu iki tablo arasında bir bağlantıdan yararlanabiliyorsak (benzerlik içeren bir sütun) bunu yapmamız mümkün.

İşte böyle durumlar için sütunları adlandırdığımız gibi tabloları adlandırıp birden fazla tablo üzerinde işlem yapabilme şansına sahibiz. Bunu ayrıca bir sonraki derste göreceğiniz INNER/LEFT/RIGHT JOIN komutu ile de yapabilirsiniz.

Şimdi tabloları adlandırarak aşağıdaki iki tabloyu tek bir sorguda kullanalım:

SELECT * FROM uyeler;

+----+-------+
| id | isim  |
+----+-------+
| 1  | Seda  |
| 2  | Merve |
| 3  | Cemil |
+----+-------+

SELECT * FROM mesajlar;

+----+--------+---------------+
| id | uye_id | mesaj         |
+----+--------+---------------+
| 1  | 1      | Selamlar      |
| 2  | 3      | Nabersiniz?   |
| 3  | 3      | Kimse var mı? |
| 4  | 2      | Merhaba       |
+----+--------+---------------+
   

Görüldüğü üzere "mesajlar" tablosunda mesajın hangi üye tarafından gönderildiği "uye_id" sütununda sayısal olarak belirtilmiş. Şimdi sorguların üye adı - mesaj eşleştirmesiyle gelmesini sağlayalım:

SELECT t1.isim, t2.mesaj
   FROM uyeler t1, mesajlar t2
   WHERE t1.id = t2.uye_id;

+-------+---------------+
| isim  | mesaj         |
+-------+---------------+
| Seda  | Selamlar      |
| Cemil | Nabersiniz?   |
| Cemil | Kimse var mı? |
| Merve | Merhaba       |
+-------+---------------+
   

Sonucun yukarıdaki şekilde geldiğini göreceğiz. Burada FROM tablolar kısmında uyeler adlı tabloyu t1 adıyla, mesajlar adlı tabloyu t2 adıyla nitelendirdiğimizi sunucuya bildirmiş olduk. Böylelikle ilgili tablonun sütunlarını sanki tek tabloymuş gibi işleme aldık. FROM tablolar kısmında kullanacağımız tabloların yanına onu temsilen bir kelime yazarız ve aralara virgül koyarak bunlara yer veririz.

WHERE koşul kısmında benzerliğe yer verdik. Çünkü bu iki tablo temelde birbirinden ilgisiz tablolar olabilir. Bu durumda bir özelliğe göre eşleştirme yapmamız gerekli. İşte mesajlar kısmında uye_id'e yer vermemizin sebebi de bu.

Bu tarz sorgularda sütun adlarından önce mutlaka tablonun adını getirin, çünkü bir benzerlik durumunda istenilen sonucu alamayabilirsiniz. Örneğin: t1.isim (uyeler tablosunun isim sütunu).

NOT: Adlandırma yaparken FROM uyeler as t1, mesajlar as t2 yapısını da kullanabilirsiniz.

Tüm hakları saklıdır. Lütfen kaynak belirtmeden sitenizde yayınlamayın. Web Sitesi © 2014