MySQL'de Birleştirme (Join) İşlemleriyle Veri Filtreleme ve Sıralama Yapmak

MySQL'de Birleştirme (Join) İşlemleriyle Veri Filtreleme ve Sıralama Yapmak

Bu makalede MySQL'de JOIN işlemleri ile veri filtreleme ve sıralama yapmanın özelliklerini inceliyoruz INNER JOIN ve LEFT JOIN gibi join işlemleri kullanılarak farklı tablolardan verileri birleştirerek daha spesifik sonuçlar alabiliyoruz COUNT, WHERE ve ORDER BY komutları da kullanılarak sorgu sonuçları daraltılabilir ve belirli bir sıraya göre sıralanabilir JOIN işlemleri kullanılarak verilerin daha doğru bir şekilde filtrelenmesi ve daha etkili sonuçlar elde edilmesi sağlanır

MySQL'de Birleştirme (Join) İşlemleriyle Veri Filtreleme ve Sıralama Yapmak

Bu makalede, MySQL'de JOIN işlemleri kullanarak veri filtreleme ve sıralama işlemlerinin nasıl yapılabileceğini anlatacağız. JOIN işlemleri, bir ya da daha fazla tablodaki verileri birleştirerek sorgu sonuçlarını genişletir. Bu sayede verileri daha doğru ve net bir şekilde filtreleyebiliriz.

Bir INNER JOIN kullanarak iki tablodaki ortak kayıtları döndürebilir ve sorgu sonuçlarını daraltabilirsiniz. Buna ek olarak, COUNT() fonksiyonu kullanarak bir tablodaki kayıt sayısını döndürebilir ve verilerin düzenlenmesinde çok yararlı olabilir. WHERE ve ORDER BY komutları da sorgu sonuçlarını daraltmak ve belirli bir sıraya göre sıralamak için kullanılır.

LEFT JOIN ise, sol taraftaki tablodaki tüm kayıtları döndürürken, eşleşen sağ taraftaki kayıtları gösterir. Üç tablo arasında JOIN yapmak daha karmaşık sorgular yapmamıza olanak sağlar. Bu işlem sırasında LIKE komutunu kullanarak, belirli bir kelime veya karakter öbeğine benzer kayıtları döndürebiliriz. Ayrıca, GROUP BY komutu kullanarak sorgu sonuçlarını daha düzenli hale getirebiliriz.

Bu makale, JOIN işlemlerinin veri filtreleme ve sıralama işlemlerinde nasıl kullanılabileceği hakkında detaylı bir bilgi sunmaktadır. Bu sayede verileri doğru bir şekilde filtreleyebilir ve sıralayabilirsiniz. Sorgu sonuçlarını daraltarak daha etkili bir sonuç elde edebilirsiniz.


JOIN İşlemleri Nedir?

MySQL'de JOIN işlemleri, verileri birleştirerek sorgu sonuçlarını genişletmemizi sağlar. JOIN işlemleri, en az iki tabloyu birleştirir. Böylece, farklı tablolarda bulunan verileri alabilir ve sonuçlarımızı daha da özelleştirebiliriz.

Birleştirme işlemi, iki farklı yoldan yapılabilir: INNER JOIN ve LEFT JOIN. INNER JOIN, sadece eşleşen kayıtları döndürürken, LEFT JOIN, tüm sol taraftaki kayıtları döndürür. Hangi join işlemini kullanmamız gerektiği sorgumuzun ihtiyacına bağlıdır. INNER JOIN işleminde, sorgu sonuçları ortak kayıtlarla sınırlanırken, LEFT JOIN ile sol taraftaki veriler korunarak, eşleşen sağ taraftaki kayıtlar gösterilir.

  • INNER JOIN, iki tablonun ortak kayıtlarını birleştirir.
  • LEFT JOIN, sol taraftaki tablodaki tüm kayıtları döndürürken, sağ taraftaki kayıtları eşleştirdiği için yan tarafta eşleşme olmayanlar NULL karşılığında döner.

Böylece, JOIN işlemi ile iki veya daha fazla tablonun verilerini birleştirerek, sorgumuzu daha da özelleştirebiliriz.


INNER JOIN ve LEFT JOIN

MySQL'de JOIN işlemlerinin kullanımıyla daha spesifik ve detaylı sorgu sonuçları elde edilebilir. INNER JOIN ve LEFT JOIN gibi JOIN işlemleri, sorgu sonuçlarını farklı şekilde etkiler.

INNER JOIN işlemi, iki tablo arasındaki eşleşen kayıtları döndürerek sorgu sonuçlarını daraltır. Bu demektir ki, yalnızca eşleşen kayıtların birleştirilmesi ile oluşan sonuçlar görüntülenir. Sol tarafta yer alan tabloda yer alan ancak eşleşme olmayan kayıtlar gösterilmez.

Tablo 1 Tablo 2
1 2
3 4
5 6

Örneğin, yukarıdaki iki tabloyu INNER JOIN ile birleştirdiğimizde, sadece eşleşen kayıtlar olan 2 ve 4 görüntülenecektir:

Tablo 1 Tablo 2
1
3
5
2
4

LEFT JOIN ise, sol taraftaki tablodaki tüm kayıtları döndürerek sorgu sonuçlarını daha kapsamlı hale getirir. Bu durumda eşleşme olmadığı durumlarda da sol taraftaki tablo gösterilir.

Tablo 1 Tablo 2
1 2
3
5

Bu örnekte, yine aynı tabloları LEFT JOIN ile birleştirdiğimizde sol taraftaki tüm kayıtlar (1, 3, ve 5) ve eşleşen sağ taraftaki kayıt (2) görüntülenecektir:

Tablo 1 Tablo 2
1 2
3
5
4

INNER JOIN ve LEFT JOIN gibi JOIN işlemleri, sorgu sonuçlarını genişletip daha spesifik hale getirerek verilerin daha verimli bir şekilde yönetilmesini sağlar.


INNER JOIN Kullanımı

MySQL'de INNER JOIN, iki veya daha fazla tablodan sadece eşleşen kayıtları seçmek için kullanılır. İki ya da daha fazla tablonun bir araya getirilmesi, bir tabloyu JOIN etmekle gerçekleştirilir, JOIN işlemi iki tablonun birleşim kümelerini oluşturan sütunları birbirine bağlar ve ikisi arasındaki ortak bu sütunlarda bulunur. INNER JOIN işlemi, hangi sütunların kullanılacağını belirleyen ON koşulunu kullanarak gerçekleştirilir.

Örneğin, iki tablo olan 'müşteri' ve 'sipariş' tablosu arasında inner join ile ortak olan 'müşteri_id' sütununa göre birleşim yapılabilir. Bu şekilde, iki tablodaki ortak kayıtları döndürmek ve sorgu sonucunu daraltmak mümkündür. INNER JOIN komutu kullanılarak, birleştirilen tablolar arasında tek sorgulama yapılması yeterlidir.

müşteri tablosusipariş tablosu
  • müşteri_id
  • müşteri_adı
  • müşteri_adresi
  • sipariş_id
  • müşteri_id
  • sipariş_tarihi

INNER JOIN kullanarak, iki tablo arasındaki ortak veriler seçilebilir. Bu işlem sayesinde, birden fazla tablonun birleştirilmesi gerektiğinde sorgular daha kolay hale gelir ve işlemler daha hızlı gerçekleştirilebilir. İçsel birleştirme işlemi sadece eşleşen verileri seçer ve diğer verileri eler. Bu işlem sayesinde, verilerin daha spesifik sorgularının hazırlanması mümkündür.


COUNT() Fonksiyonu Kullanımı

COUNT() fonksiyonu, bir tablodaki kayıt sayısını döndürür ve JOIN işlemleriyle birleştirilen verilerin sayısını öğrenmek için kullanılabilir. Örneğin, bir müşteriler tablosu ve bir siparişler tablosu olsun ve bu iki tabloyu birleştirerek hangi müşterilerin sipariş verdiğini öğrenmek isteyelim. Bu sorguyu yaparken COUNT() fonksiyonu kullanarak toplam sipariş sayısını bulabiliriz.

müşteriler siparişler
müşteri_id sipariş_id
ad müşteri_id
soyad sipariş_tarihi

Örnek sorgu şu şekilde olabilir:

SELECT müşteriler.ad, müşteriler.soyad, COUNT(siparişler.sipariş_id) AS 'Toplam Sipariş Sayısı'FROM müşterilerLEFT JOIN siparişler ON müşteriler.müşteri_id = siparişler.müşteri_idGROUP BY müşteriler.ad, müşteriler.soyad

Bu sorgu sonucu, her müşterinin adını, soyadını ve toplam sipariş sayısını gösterir. COUNT() fonksiyonunun kullanımı, tablo içindeki verilerin nasıl şekillendirileceğine yönelik kararları vermek için oldukça yararlıdır.


WHERE ve ORDER BY Komutlarının Kullanımı

MySQL'de JOIN işlemleri kullanarak yapabileceğimiz en yaygın işlemlerden biri, verileri belirli bir koşula göre sorgulamak ve sıralamak için WHERE ve ORDER BY komutlarını kullanmaktır. WHERE komutu, bir sorgu sonucunu daraltmak için kullanılır. Belirli bir koşul sağlayan kayıtları sorgu sonucuna dahil eder. Örneğin, "fiyatı 100'den fazla olan ürünleri getir" gibi bir tabloyu filtrelemek istediğinizde WHERE komutunu kullanabilirsiniz.

ORDER BY komutu, belirtilen sütuna göre sıralama yapar. Örneğin, "fiyatına göre ürünleri sırala" gibi bir sorgu yapmak istediğinizde ORDER BY komutunu kullanabilirsiniz. Özellikle büyük veritabanlarında, sıralama yapmadan verileri incelemek oldukça zordur. Sıralama, sorgu sonucunu daha anlamlı hale getirebilir ve verileri daha anlaşılır kılabilir.

WHERE ve ORDER BY komutlarını birleştirerek daha etkili bir sorgu yapabilirsiniz. İşlem sırası önemlidir. Önce filtreleme yapmak ve ardından sıralama yapmak gereklidir. Aksi takdirde, sıralama işlemi önce gerçekleştirilirse, tam sorgu sonucunu görmek mümkün olmayabilir.


LEFT JOIN Kullanımı

MySQL'de Join işlemi kullanılarak verileri birleştirmek ve filtrelemek mümkündür. LEFT JOIN işlemi, sol taraftaki tablodaki tüm kayıtları döndürürken, eşleşen sağ taraftaki kayıtları da gösterir. Bu nedenle LEFT JOIN, sorgu sonucu daha fazla kayıt döndürmek için kullanılabilir.

Bir örnekle açıklamak gerekirse, bir ülke listesiyle birlikte şehir listemiz olduğunu varsayalım. Şehir tablosunda her şehrin ait olduğu ülkenin kodu da olsun. Bu durumda, bütün ülkelerin listelendiği tablo ile şehirlerin listelendiği tabloyu LEFT JOIN ederek, bütün şehirleri ve bu şehirlerin ait oldukları ülkeyi listeleyebiliriz.

Ülkeler (country) Kolon Adı
Türkiye TR
İngiltere UK
Fransa FR
Şehirler (city) Kolon Adı Ülke Kodu
İstanbul 34 TR
Ankara 06 TR
Londra 01 UK
Paris 02 FR

Bir LEFT JOIN işlemi uyguladığımızda, aşağıdaki gibi bir sonuç elde ederiz:

Şehirler Kolon Adı Ülke Kodu Ülkeler
İstanbul 34 TR Türkiye
Ankara 06 TR Türkiye
Londra 01 UK İngiltere
Paris 02 FR Fransa
Manchester 03 null null

Bu örnekte LEFT JOIN, ülke tablosundan kayıtların kaybedilmesine neden olmadan, şehir tablosundan tüm kayıtların getirilmesine yardımcı oldu.


Join İşlemleri İçin Daha Fazla Örnek

MySQL içerisinde JOIN işlemleri oldukça önemlidir ve verileri sorgularken birçok koşulu bir arada kullanarak sonuçları daraltabilirsiniz. Bu bölümde, daha gösterişli bir örneği inceleyerek JOIN işlemlerinin kullanımını daha iyi anlatacağız.

Örneğimizde, bir restoran zincirindeki müşterilerin siparişlerini takip eden ve müşterilerin kayıtlarını tutan iki adet tablo kullanılacaktır. İki tabloda da birbiriyle ilişkili olan ID sütunları kullanılarak JOIN işlemi gerçekleştirilecektir.

Müşteriler Siparişler
ID ID Tarih Sipariş
1 1 2022-01-04 Hamburger
2 2 2022-01-05 Pizza
3 3 2022-01-06 Hamburger

İki tabloyu JOIN işlemiyle birleştirerek, her müşterinin ne zaman ve neyi sipariş ettiğini gösteren bir sonuç elde edebilirsiniz. Örneğin, tüm müşterilerin hamburger siparişlerini görmek için sorgunuzu şu şekilde yazabilirsiniz:

SELECT Müşteriler.ID, Siparişler.Tarih, Siparişler.SiparişFROM MüşterilerINNER JOIN SiparişlerON Müşteriler.ID = Siparişler.IDWHERE Siparişler.Sipariş = 'Hamburger'ORDER BY Siparişler.Tarih DESC;
  • SELECT sözcüğü, hangi sütunların alınacağını belirler.
  • FROM sözcüğü, hangi tabloların kullanılacağını belirler.
  • INNER JOIN, iki tabloyu ID sütunu üzerinden birleştirir.
  • WHERE, sorgunun seçenekleri belirler. Bu örnekte, sadece hamburger siparişleri görünecektir.
  • ORDER BY, tarih sütununa göre sıralama yapar.

Bu örnekte, JOIN işlemi kullanarak her bir müşterinin yaptığı siparişlerin listesini oluşturduk. Burada COUNT() fonksiyonunu kullanarak müşterilerin yaptığı toplam sipariş sayısını da hesaplayabilirsiniz. Bu şekilde, müşterilerin hangi yemekleri sipariş ettiklerine göre analizler yapabilir ve işletmenizin performansını daha iyi anlayabilirsiniz.


Üç Tablo İşlemi

MySQL'de JOIN işlemlerini kullanarak, sadece iki değil, üç veya daha fazla tablo arasında da veri birleştirebilirsiniz. Üç tablo JOIN işlemi, daha karmaşık veritabanı yapılarına sahip projelerde sık sık kullanılır. Üç tablo arasındaki JOIN işlemleri, temelde iki tabloya benzer şekilde gerçekleştirilir, ancak biraz daha dikkat gerektirir. Bu işlem sırasında, JOIN işlemi yapılacak üç tablonun birden fazla ortak sütunu olduğundan emin olmanız gerekir.

Örneğin, bir e-ticaret uygulamasının kullanıcı, sipariş ve ürün tabloları olduğunu varsayalım. Bu durumda, kullanıcının siparişlerini ve her bir siparişte hangi ürünlerin yer aldığını gösteren bir rapora ihtiyaç duyulabilir. Bu işlem için, üç tablo arasında birbirine bağlı en az iki ortak sütun olması gerekmektedir. Örneğin, kullanıcı ve siparişler tabloları arasındaki ortak sütun, kullanıcıların ID'si olabilir, siparişler ve ürünler tabloları arasındaki ortak sütun ise sipariş ID'si olabilir.

Kullanıcılar Siparişler Ürünler
1 1001 AA
2 1002 BB
3 1002 CC

Yukarıdaki örnekte, sipariş ID'si 1002 olan kullanıcının iki farklı ürün siparişi olduğu görülmektedir. Üç tablo arasında JOIN yaparak bu verileri daha detaylı bir şekilde inceleyebilirsiniz.

Üç tablo arasında JOIN yapmak için, INNER JOIN ve LEFT JOIN işlemleri kullanılabilir. Bu işlemler arasındaki fark, eşleşen verilerin nasıl işleme sokulacağıdır.

  • INNER JOIN: Tüm üç tablodaki ortak verileri döndürür.
  • LEFT JOIN: Sol taraftaki tablodaki tüm verileri ve eşleşen sağ taraftaki verileri döndürür.

LIKE Komutu Kullanımı

MySQL'de, LIKE komutu kullanarak sorgu sonuçlarımızı belirli bir kelime veya karakter öbeğine göre daraltabiliriz. LIKE komutu, % veya _ gibi yer tutucu karakterlerle kullanılabilir.

% karakteri, 0 veya daha fazla karakteri temsil ederken, _ karakteri sadece tek bir karakteri temsil eder. Örneğin, 'a%' sorgusu, 'apple', 'apricot' ve 'avocado' gibi kelimeleri döndürecektir.

LIKE komutundan yararlanıp daha da spesifik bir arama yapmak istiyorsanız, % veya _ karakterlerini kullanarak sorgunuzu şekillendirebilirsiniz. Örneğin, 'A%e' sorgusu, 'Apple' veya 'Antelope' gibi büyük A harfiyle başlayıp, e harfiyle biten kayıtları döndürecektir.

LIKE komutu gibi, MySQL'de diğer sorgu komutlarına da yer tutucu karakterler ekleyebilirsiniz. Bu, verilerin filtrelenmesini daha da spesifik hale getirir ve sorgu sonuçlarının doğru kayıtları içeren anlamlı sonuçlar vermesine yardımcı olur.

Bununla birlikte, LIKE komutu henüz yeterince kullanışlı değilse, AND veya OR ve diğer filtreleme komutları kullanarak sorgu sonuçlarınızı daha da daraltabilirsiniz.


GROUP BY Komutu Kullanımı

GROUP BY komutu, bir sütuna göre gruplama yaparak sorgu sonuçlarını daha düzenli hale getirmeye yardımcı olan bir özelliğidir. Örneğin, bir veritabanında farklı ülkelerden müşterileriniz olsun ve hangi ülke'den kaç müşteriniz olduğunu bilmek istediğinizi varsayalım. GROUP BY kullanarak, ülkeleri gruplayabilir ve her bir ülkede kaç müşterinin olduğunu görüntüleyebilirsiniz.

Bir başka örnek ise, bir online mağaza veritabanında birçok ürünün olduğunu varsayalım ve kaç adet her bir ürünün satılmış olduğunu öğrenmek istiyoruz. GROUP BY kullanarak, her bir ürünü gruplandırabilir ve satılan ürün adetlerini görüntüleyebilirsiniz.

GROUP BY komutu, sorgu sonuçlarını daha anlaşılır ve düzenli hale getirmeye yardımcı olurken, COUNT() fonksiyonu gibi diğer fonksiyonlarla birleştirilerek veriler daha da detaylı bir şekilde analiz edilebilir. Örneğin, belirli bir ürünün bir ay içinde kaç adet satıldığını öğrenmek istiyoruz. Bu durumda, GROUP BY ile ürünleri grupladıktan sonra, COUNT() fonksiyonunu kullanarak satılan adetleri sayabilir ve sonuçları sıralayabilirsiniz.