MySQL veritabanında birden fazla tablo kullanarak veri işlemek için Join işlemi kullanılabilir Join işlemi, tablolar arasında veri birleştirme işlemi yaparak çekilen verilerin farklı tablolarda gösterilmesini sağlar Inner Join, Left Join ve Right Join olmak üzere üç farklı join türü vardır Join işlemi sırasında aynı anda birden fazla sütun da kullanılabilir Veri filtreleme işlemi için Union, Intersect ve Except işlemleri kullanılabilirken, veri hesaplamaları için Count, Sum ve Average işlemleri kullanılabilir Örnek sorgularla join işlemlerinin uygulamalı olarak kullanımı gösterilebilir

MySQL veritabanında tek bir tablo içindeki verileri işlemek artık yeterli olmayabilir. Birden fazla tablo kullanarak veritabanını yönetmek gerekebilir. Bu durumda, tablolar arasında veri birleştirme, filtreleme ve hesaplama işlemleri yapmak gerekir. Bu makalede, MySQL'de birden fazla tabloyu kullanırken nasıl işlemler yapılacağı ve örnek sorgulara yer verilecektir.
Birden fazla tablo ile veri işlemek için kullanabileceğimiz anahtar kelime "Join" işlemidir. Join işlemi, iki veya daha fazla tablodan veri çekerken kullanılır ve tablolar arasında veri birleştirme işlemi yapar. Join işlemi sırasında veriler, birleştirilecek tablolarda belirli sütunlar tarafından ortak olması gerekmektedir.
Birden fazla tablo kullanımıyla ilgili örnek sorgulara daha ayrıntılı bakılmadan önce, Join işlemi için kullanabileceğimiz farklı yöntemlere bakmakta yarar vardır. Bu yöntemler, sırasıyla Inner Join, Left Join ve Right Join'dir. Inner Join, iki tablonun kesişen kısımlarındaki verilerin birleştirilmesi için kullanılır. Left Join, sol taraftaki tablonun tüm verilerinin sağ taraftaki tablo ile birleştirilmesi ve sağ taraftaki tabloda eşleşme olmaması durumunda null değeri atanması için kullanılır. Right Join ise sağ tarafaki tablonun tüm verilerinin sol taraftaki tablo ile birleştirilmesi ve sol taraftaki tabloda eşleşme olmaması durumunda null değeri atanması için kullanılır.
Birden fazla tablo kullanımı, veri filtreleme işlemi için de kullanılabilir. Union, Intersect ve Except işlemleri ile tablolar arasındaki verileri filtreleyebiliriz. Union işlemi, iki tablo arasında ortak veya ortak olmayan verilerin listelenmesi için kullanılır. Intersect işlemi, iki tablonun kesişen kısımlarındaki verilerin listelenmesi için kullanılır. Except işlemi ise sol taraftaki tabloda bulunan ancak sağ taraftaki tabloda bulunmayan verilerin listelenmesi için kullanılır.
MySQL'de birden fazla tablolarla yapılabilecek son işlem türü, veri hesaplamalarını içerir. Count, Sum ve Average işlemleri ile tablolardan veri çekip hesaplamalar yapabiliriz. Count işlemi, tablodaki toplam kayıt sayısını bulmak için kullanılır. Sum işlemi, belirli bir sütundaki sayısal değerlerin toplamını bulmak için kullanılır. Average işlemi ise belirli bir sütundaki sayısal değerlerin ortalamasını bulmak için kullanılır.
Örnek sorgular üzerinden işlemlerin daha iyi anlaşılması mümkündür. İşlemler için sorguların pratik uygulamaları ile ilgili örnekler vererek, birden fazla tablo kullanarak nasıl veri işlemleri yapabileceğinizi anlatacağız.
Bunun için ilk örnek olarak INNER JOIN işlemini kullanarak, çalışanların ve departmanların nasıl listelenebileceğine bakabiliriz. İkinci örnek ise, birden fazla tablodan veri çekme, sıralama ve filtreleme yaparak, müşterilerin ve siparişlerinin nasıl listeleneceğine bakabiliriz.
Tablolar Arasında Veri Birleştirme (Join)
Birden fazla tablodan veri çekmek, veritabanı yönetimi açısından oldukça önemlidir. Ancak bu işlemi yaparken nasıl bir yol izlemeniz gerektiğini bilmek, doğru sonuçlara ulaşmanız açısından oldukça önemlidir. Bu noktada, tablolar arasında veri birleştirme işlemleri devreye girer.
Veri birleştirme işlemleri, tablolardaki belirli sütunların ortak olduğu durumlarda gerçekleştirilir. Bu sayede, veriler farklı tablolardan çekilerek tek bir tabloda gösterilebilir. Bu işlemi gerçekleştirmek için kullanılan temel yöntem ise JOIN komutudur.
Join işleminde, kullanılan iki tablo arasındaki ortak sütunlar belirtilir ve sonucunda ortak veriler birleştirilir. MySQL'de, Inner Join, Left Join ve Right Join olmak üzere üç farklı join türü vardır. Inner Join, iki tablonun kesişen kısımlarındaki verilerin birleştirilmesini sağlar. Left Join ise, sol taraftaki tablonun tüm verilerinin sağ taraftaki tablo ile birleştirilmesini ve sağ taraftaki tabloda eşleşme olmaması durumunda null değeri atanmasını sağlar.
Right Join ise, sağ tarafaki tablonun tüm verilerinin sol taraftaki tablo ile birleştirilmesini ve sol taraftaki tabloda eşleşme olmaması durumunda null değeri atanmasını sağlar. Join işlemi gerçekleştirilirken aynı anda birden fazla sütunun kullanılması da mümkündür.
Aşağıdaki tablolarda müşteri ve sipariş bilgileri yer almaktadır:
Müşteriler | |||
---|---|---|---|
ID | Ad | Soyad | |
1 | Ahmet | Yılmaz | ahmet.yilmaz@gmail.com |
2 | Mustafa | Sarı | mustafa.sari@hotmail.com |
Siparişler | |||
---|---|---|---|
ID | MüşteriID | Ürün | Tarih |
1 | 1 | Laptop | 2021-05-05 |
2 | 2 | Cep Telefonu | 2021-06-01 |
3 | 1 | Masa Lambası | 2021-07-10 |
Bu iki tablodan, müşteri isimleri ve sipariş bilgileri birleştirilerek tek bir tabloda gösterilebilir. Bunun için Inner Join kullanılır ve müşteri tablosundan ID bilgisi, siparişler tablosundan da MüşteriID sütunu ortak veri olarak belirtilir.
SELECT Müşteriler.Ad, Müşteriler.Soyad, Siparişler.Ürün, Siparişler.TarihFROM MüşterilerINNER JOIN Siparişler ON Müşteriler.ID = Siparişler.MüşteriID;
Bu sorgu sonucunda, aşağıdaki gibi bir tablo elde edilir:
Ad | Soyad | Ürün | Tarih |
---|---|---|---|
Ahmet | Yılmaz | Laptop | 2021-05-05 |
Mustafa | Sarı | Cep Telefonu | 2021-06-01 |
Ahmet | Yılmaz | Masa Lambası | 2021-07-10 |
Inner Join
Inner Join, veri tabanında birden fazla tablo kullanılması durumlarında kullanılan bir işlem türüdür. Bu işlemle iki farklı tablodaki ortak olan sütun veya değerler birleştirilir. Yani, Inner Join işlemi ile sadece kesişen veriler birleştirilir.
Inner Join, SQL sorgusu içinde JOIN anahtar kelimesi kullanılarak gerçekleştirilir. Bu sorgulama işlemi, iki veya daha fazla tablo arasında geçerli olan bir koşul belirtilerek yapılır. Bu koşul da, birden fazla tablo arasında örtüşen veya ortak olan sütunlardan seçim yapılarak gerçekleştirilir.
Çalışanlar | Departmanlar |
---|---|
Ahmet | Satış |
Ali | Muhasebe |
Merve | İK |
Yukarıdaki örnekte, iki ayrı tablo olan "Çalışanlar" ve "Departmanlar" tablolarındaki ortak verileri Inner Join işlemi ile birleştirebiliriz. Örneğin, "Satış" departmanında çalışanları listelemek istediğimizde, bu işlem SQL sorgusu içinde şu şekilde yazılır:
SELECT çalışanlar.*, departmanlar.*FROM çalışanlarINNER JOIN departmanlar ON çalışanlar.departman_id = departmanlar.idWHERE departmanlar.departman_adı = 'Satış'
Bu sorgu, "Çalışanlar" tablosunda "Departmanlar" tablosunda bulunana "id" sütununa karşılık gelen "departman_id" sütunu ile eşlenebilir verileri listeler. Sonrasında, ilgili departmana ait olan verileri WHERE koşulu ile filtreler.
Left Join
MySQL'de çoklu tablo işlemleri sırasında sol taraftaki tabloların üzerinden verileri toplamak oldukça önemlidir. Sol taraftaki tablodaki tüm veriler sağ taraftaki tablo üzerine atanarak, ortak değerler için birleştirilir. Sol taraftaki tabloda bir eşleşme olmaması durumunda null değeri atanması sağlanır.
Bu işlem için kullanılacak olan sorgu LEFT JOIN olarak ifade edilir. İki tablonun birleştirilmesi aşağıdaki gibi kodlanır:
SELECT | FROM | LEFT JOIN | ON |
---|---|---|---|
Tablo1.Sutun, Tablo2.Sutun | Tablo1 | LEFT JOIN | Tablo2 ON Tablo1.Ortak_Sütun = Tablo2.Ortak_Sütun |
- Tablo1.Sütun: İlk tablonun sütunları
- Tablo2.Sütun: İkinci tablonun sütunları
- Tablo1: İlk tablonun adı
- LEFT JOIN: Birleştirme işlemi olarak kullanılan sql kodu
- Tablo2: İkinci tablonun adı
- ON: Eşleştirme koşullarını ifade eden sql kodu
- Tablo1.Ortak_Sütun: İki tablonun birleştirildiği sütunun adı
- Tablo2.Ortak_sütun: İki tablonun birleştirildiği sütunun adı
Bu şekilde, MySQL'de sol join kullanarak veri birleştirme işlemleri gerçekleştirilebilir. Sol taraftaki tablodaki tüm veriler alınarak sağ taraftaki tablo ile birleştirilir ve birleşen değerler için ortak bir sütun belirtilir. Eşleşme olmaması durumunda null değeri atanması sağlanır.
Right Join
Right Join, MySQL'de bir tablodaki tüm bilgilerle diğer tabloda eşleşen bilgilerin birleştirilmesine olanak tanıyan bir işlemdir. Right Join işlemi, sol taraftaki tabloda eşleşme olmadığı durumlarda null değerleri atanmasıyla çalışır.
Bu durumda, sağ tabloda bulunan tüm veriler sağlam bir şekilde korunur ve sol tabloda eşleşme olmaması durumunda null değeri atanarak birleştirilir. Bu nedenle, sağ tablonun tüm verileri de dahil edilir, ancak sol taraftaki tabloda eşleşme olmadığı durumlarda null değeri atanır.
Örneğin, bir müşteri listesi ile sipariş listesi arasında Right Join işlemi yapalım. Sipariş tablosunda, müşteri numaraları kaydedilmektedir ve müşteri listesindeki her müşteri bir veya daha fazla siparişe sahiptir.
Müşteri Tablosu | |||
---|---|---|---|
Müşteri No | Adı | Soyadı | |
1 | Ahmet | Yılmaz | ahmet.yilmaz@example.com |
2 | Aslı | Güneş | asli.gunes@example.com |
Sipariş Tablosu | |||
---|---|---|---|
Sipariş No | Müşteri No | Ürün | Adet |
1 | 1 | Kalem | 2 |
2 | 1 | Defter | 3 |
3 | 2 | Silgi | 1 |
Bu içeriği kullanarak, Right Join işlemi yapalım:
SELECT * FROM müşteri_listesi RIGHT JOIN sipariş_listesi ON müşteri_listesi.müşteri_no = sipariş_listesi.müşteri_no;
Bu sorgu, sağ tablonun tüm bilgilerini dahil eder ve sol tabloda olmayan tüm veriler null olarak atanır. Sonuç aşağıdaki gibi olacaktır:
Müşteri No | Adı | Soyadı | Sipariş No | SiparişÜrün | Adet | |
---|---|---|---|---|---|---|
1 | Ahmet | Yılmaz | ahmet.yilmaz@example.com | 1 | Kalem | 2 |
1 | Ahmet | Yılmaz | ahmet.yilmaz@example.com | 2 | Defter | 3 |
2 | Aslı | Güneş | asli.gunes@example.com | 3 | Silgi | 1 |
Bu örnekte, sağ tablo sipariş listesi iken, sol tablo müşteri listesidir. Sorgu, müşteri listesinde eşleşmeyen siparişlerin listelenmesine olanak tanır.
Tablolar Arasında Veri Filtreleme
MySQL'de birden fazla tablo kullanırken, verileri filtrelemek oldukça kullanışlıdır. Birden fazla tablodan veri almak ve bu verileri belirli kriterlere göre filtrelemek için farklı yöntemler bulunmaktadır.
Bunlar arasında en yaygın kullanılanları UNION, INTERSECT, ve EXCEPT yöntemleridir.
- Union: İki tablo arasındaki ortak veya ortak olmayan verilerin listelenmesi için kullanılır. UNION işlemi, verilerin çiftlerini kaybetmeden birleştirir ve sıralama işlemi için ORDER BY ifadesi kullanılmalıdır.
- Intersect: İki tablonun kesişen kısımlarındaki verilerin listelenmesi için kullanılır. INTERSECT işlemi, iki tablonun kesişen verilerini alır ve tek bir sütunda tekil olarak listeler.
- Except: Sol taraftaki tabloda bulunan ancak sağ taraftaki tabloda bulunmayan verilerin listelenmesi için kullanılır. EXCEPT işlemi, sol taraftaki tablodaki verileri sağ taraftaki tablodan çıkarır.
Veriler, yukarıda bahsedilen yöntemler kullanılarak tek bir sorgu içinde birleştirilebilir ve filtrelenerek süzülebilir. Bu, birden fazla tablo kullanımı sırasında oldukça önemlidir ve verilerin hızlı bir şekilde elde edilmesini sağlar.
Union
Birden fazla tablodan veri çekerken, bazen iki tablo arasındaki ortak veya ortak olmayan verileri birleştirmek gerekebilir. Bu durumda UNION işlemi kullanılır. UNION, verilerin yinelenmeden birleştirilmesine olanak sağlar.
UNION işlemi yalnızca aynı sayıda ve aynı sütun adlarına sahip tablolar arasında uygulanabilir. Veritabanından veri çekerken, ortak verilere ihtiyacınız varsa veya iki tablodan yalnızca birinde bulunan verileri birleştirmek istiyorsanız UNION işlemi size yardımcı olacaktır.
Adı | Soyadı | Mağaza |
---|---|---|
Aylin | Özmen | İstanbul |
Ali | Aksu | Ankara |
Adı | Soyadı | Mağaza |
---|---|---|
Burak | Yılmaz | İstanbul |
Ahmet | Kara | İzmir |
Örneğin, yukarıdaki iki tabloyu birleştirmek istiyoruz:
Adı | Soyadı | Mağaza |
---|---|---|
Aylin | Özmen | İstanbul |
Ali | Aksu | Ankara |
Burak | Yılmaz | İstanbul |
Ahmet | Kara | İzmir |
Yukarıdaki örnekte, iki tablo union işlemiyle birleştirildi ve sonuçta her iki tablodaki tüm veriler tek bir tabloda görüntülendi.
Intersect
Intersect işlemi, iki tablo arasındaki kesişen verilerin listelenmesi için kullanılır. Yani, bir tabloda bulunan veri diğer tabloda da bulunuyorsa bu veriler intersect komutu ile listelenebilir.
Intersect işlemi sırasında her iki tablo da sorguda kullanılan sütunları aynı isimde ve aynı tipte olmalıdır. Intersect işlemi sorgusu yazarken kullanılacak anahtar kelimeler intersection ya da intersect all olabilir.
Intersect sorgusu ile ilgili örnek bir tablo yapısı şu şekilde olabilir:
Ad | Soyad | Sehir |
---|---|---|
Ali | Kara | Ankara |
Ahmet | Mavi | İstanbul |
Mert | Beyaz | Trabzon |
Gökhan | Sarı | İstanbul |
Ad | Soyad | Sehir |
---|---|---|
Ali | Kara | Ankara |
Ayşe | Yılmaz | İzmir |
Gökhan | Sarı | İstanbul |
Dilara | Kırmızı | Ankara |
Bu iki tabloya intersect işlemi uygulandığında, sadece "Ali" adlı kişinin Ankara'da yaşaması nedeniyle iki tablo arasında kesişen bir veri olacaktır. Bu veriyi listelemek için kullanılacak sorgu şu şekilde olabilir:
SELECT Ad, Soyad, Sehir FROM Tablo1INTERSECTSELECT Ad, Soyad, Sehir FROM Tablo2;
Yukarıdaki sorgu sonucunda sadece "Ali" adlı kişinin verileri listelenecektir.
Except
MySQL'de birden fazla tablodan veri çekmek ve işlem yapmak oldukça sık kullanılan bir yöntemdir. Bunun için kullanılan komutlar arasında, farklı tablolardan veri çekip, bu verileri birleştirerek filtreleme yapmak için "EXCEPT" komutu bulunur.
EXCEPT komutu, sol taraftaki tabloda bulunan ancak sağ taraftaki tabloda bulunmayan verileri listeler. Bu komut diğer birleştirme işlemlerinin aksine sadece sol taraftaki tablodaki verileri döndürür. Örneğin, bir tabloda kişilerin adı ve soyadı bilgileri bulunurken diğer tabloda bu kişilerin adres bilgileri yer almaktadır. EXCEPT komutu ile sadece ilk tabloda adı ve soyadı bilgisi bulunan kişilerin listesi elde edilebilir.
Bu komut kullanılırken iki tablonun en az bir sütunu ortak olmalıdır. Ayrıca, sütun isimleri ve veri tipleri de aynı olmalıdır. Aşağıdaki örnekte, birden fazla tablo kullanılarak EXCEPT komutu nasıl kullanılır gösterilmiştir:
id | name | age |
---|---|---|
1 | Ahmet | 27 |
2 | Mehmet | 30 |
3 | Ayşe | 25 |
id | name | age |
---|---|---|
1 | Ahmet | 27 |
2 | Mehmet | 30 |
Yukarıdaki örnekte, sol taraftaki tablo "tablo_1" iki sütuna sahipken sağ taraftaki "tablo_2" tablosu da aynı iki sütuna sahiptir. Burada sol taraftaki tabloda bulunan ancak sağ taraftaki tabloda bulunmayan "Ayşe" adlı kişinin bilgisi EXCEPT komutu kullanılarak elde edilir.
Bu örnekten de anlaşılacağı gibi, MySQL'de birden fazla tablo kullanarak veri işlemleri yapmak oldukça kolaydır. EXCEPT komutu ise sadece sol taraftaki tablodaki farklı verileri listeleme özelliği ile farklı bir seçenek sunar.
Tablolar Arasında Veri Hesaplamaları
Tablolar arasında veri hesaplamaları, bir veya daha fazla tablodan veri çekerken belirli bir sütundaki sayısal değerlerin toplamı, ortalaması veya toplam kayıt sayısı gibi hesaplama işlemlerinin yapılması anlamına gelir. Bu işlemler, birden fazla tablo kullanıldığında da yapılabilir. İşte tablolar arasında veri hesaplamaları için kullanılan en yaygın SQL fonksiyonları:
Bu fonksiyon, belirtilen sütundaki tüm kayıtların sayısını verir. Örneğin, "SELECT COUNT (*) FROM employees" sorgusu çalışanların toplam sayısını verir.
Belirtilen sütundaki tüm sayısal değerlerin toplamını verir. Örneğin, "SELECT SUM (salary) FROM employees" sorgusu çalışanların maaş toplamını verir.
Belirtilen sütundaki tüm sayısal değerlerin ortalamasını verir. Örneğin, "SELECT AVG (salary) FROM employees" sorgusu çalışanların ortalama maaşını verir.
Bu fonksiyonlar, bir tablodaki verileri hesaplamak için kullanılabilir. Ancak, birden fazla tablo kullanıldığında, JOIN cümleleri kullanarak verileri birleştirmek gereklidir. Örneğin, "SELECT department_name, COUNT (employee_id), AVG (salary) FROM departments INNER JOIN employees ON departments.department_id = employees.department_id GROUP BY department_name" sorgusu, her departman için toplam çalışan sayısı ve ortalama maaşını verir.
Veri hesaplamaları için kullanılan diğer SQL fonksiyonları da vardır. Ancak, bu üç fonksiyon en sık kullanılanlar arasındadır. Tablolar arasında veri hesaplamaları yaparken, JOIN cümleleri kullanarak verileri birleştirdiğinizden emin olun. Ayrıca, sorgularınızı GROUP BY cümlesi ile gruplandırarak doğru sonuçlar aldığınızdan emin olun.
Count
MySQL'de birden fazla tablo kullanarak veri çekmek ve birtakım hesaplamalar yapmak oldukça yaygın bir işlemdir. Bunlardan biri de Count fonksiyonudur. Count fonksiyonu, bir tablodaki toplam kayıt sayısını bulmamıza olanak sağlar.
Count fonksiyonunu kullanmak için öncelikle sorgulamak istediğimiz tabloyu ve sütunu seçmeliyiz. Daha sonra COUNT() fonksiyonunu kullanarak kayıt sayısını bulabiliriz. Örneğin:
ID | Name | City |
---|---|---|
1 | John | New York |
2 | Jane | Los Angeles |
3 | Bob | Chicago |
Yukarıdaki örnek tabloyu ele alalım. Bu tablodaki toplam kayıt sayısını bulmak için şu sorguyu kullanabiliriz:
SELECT COUNT(ID) FROM table_name;
Bu sorgunun sonucu 3 olacaktır, çünkü bu tabloda 3 adet kayıt vardır. Eğer tüm sütunlardaki verileri saymak istiyorsak COUNT(*) kullanabiliriz:
SELECT COUNT(*) FROM table_name;
Bu sorgunun sonucu da yine 3 olacaktır.
Count fonksiyonu, verileri saymak için oldukça kullanışlı bir fonksiyondur ve birden fazla tablodan veri çekerken de sıklıkla kullanılır. Farklı koşullar altında kullanıcının istediği sayısal verileri elde etmek için Count fonksiyonu oldukça yararlıdır.
Sum
MySQL'de birden fazla tablo kullanarak veri çekmek için işlemler yapmak oldukça önemlidir. Bu işlemlerden biri de belirli bir sütundaki sayısal değerlerin toplamının bulunmasıdır. Sum fonksiyonu kullanılarak bu işlem oldukça kolay hale gelmektedir.
Sum fonksiyonu, belirli bir sütundaki tüm sayısal değerleri toplar ve sonucu verir. Aşağıdaki örnek sorguda, "fiyat" sütununda bulunan tüm değerlerin toplamını buluyoruz:
id | ürün | fiyat |
---|---|---|
1 | Telefon | 1500 |
2 | Laptop | 3500 |
3 | Tablet | 1200 |
SELECT SUM(fiyat) FROM ürünler;
Bu sorgu sonucunda, "fiyat" sütunundaki tüm değerler toplanacak ve sonucu verilecektir. Yukarıdaki örnekte, 1500 + 3500 + 1200 = 6200 sonucu oluşur.
Sum fonksiyonu kullanarak, belirli bir sütundaki sayısal değerlerin toplamının yanı sıra, bu değerlerin ortalama ve en yüksek/en düşük değerlerini de bulabiliriz. Bu fonksiyon, verileri anlamlandırmamızı, özetlememizi ve işimize yarayan değerleri daha kolay incelememizi sağlar.
MySQL'de sum fonksiyonunun kullanımı oldukça basittir ve birden fazla tablo kullanarak veri çekmek için oldukça önemli bir araçtır.
Average
Average, MySQL'de birden fazla tablodan veri çekerken sıklıkla kullanılan bir hesaplama yöntemidir. Belirli bir sütundaki sayısal değerlerin ortalamasının bulunması amacıyla kullanılır. Örneğin, bir sipariş tablosunun toplam tutar sütununda yer alan değerlerin ortalamasını bulmak istiyorsanız, bu hesaplama yöntemini kullanabilirsiniz.
Bu işlemi yapmak için "AVG" adlı bir fonksiyondan yararlanabilirsiniz. Ortalama bulmak istediğiniz sütunu belirtmeniz yeterlidir. İşlem sonucunda, sütundaki tüm sayısal değerlerin toplamına bölünerek ortalaması elde edilir.
Örnek | Açıklama |
---|---|
SELECT AVG(toplam_tutar) FROM siparisler; | Siparişler tablosundaki toplam tutar sütununun ortalamasını hesaplar. |
Bu hesaplama yöntemiyle müşterilerin toplam harcamalarının ortalamasını da bulabilirsiniz. Bunun için müşteriler tablosundaki müşteri ID'lerle siparişler tablosundaki müşteri ID'leri arasında birleştirme yaparak, her müşterinin toplam harcamasını hesaplayabilirsiniz. Daha sonra bu değerleri kullanarak müşterilerin toplam harcamalarının ortalamasını bulabilirsiniz.
Örnek | Açıklama |
---|---|
SELECT AVG(toplam_harcama) FROM (SELECT SUM(toplam_tutar) AS toplam_harcama FROM siparisler INNER JOIN müsteriler ON siparisler.musteri_id = müsteriler.id GROUP BY müsteriler.id) AS müsteri_harcamalari; | Müşterilerin toplam harcamalarının ortalamasını hesaplar. |
Yukarıdaki örnek sorguda, önce müşteriler ve siparişler tablolarının kullanılması için INNER JOIN işlemi yapılır. Daha sonra, müşterilerin toplam harcamaları GROUP BY ile müşteri ID'lerine göre gruplandırılır ve "toplam_harcama" adı verilen yeni bir sütunda toplanır. Son olarak, bu yeni sütundaki verilerin ortalaması bulunur ve "müsteri_harcamalari" adı verilen geçici bir tabloda tutulur.
Örnek Sorgular
MySQL'de birden fazla tablo kullanarak veri çekmek için kullanılan işlemler örnek sorgularla incelenebilir. Bu sayede farklı senaryolara yönelik olarak gelişmiş SQL sorguları yazabilirsiniz.
Örneğin, "Çalışanların ve Departmanların Listelenmesi" adlı bir senaryo için INNER JOIN kullanarak veri çekebilirsiniz. Bu sorguda, çalışanların bulunduğu bir tablo ve departmanların bulunduğu bir tablo INNER JOIN kullanılarak birbirine bağlanabilir. Bu sayede, her çalışanın çalıştığı departmanın detaylı bilgileriyle birlikte listelenebilir.
Çalışanlar Tablosu | Departmanlar Tablosu |
---|---|
İsmail | Finans |
Emre | Bilgi İşlem |
Aylin | İnsan Kaynakları |
Bunun yanı sıra, "Müşterilerin ve Siparişlerinin Listelenmesi" adlı bir senaryoda farklı tablolar üzerinden veri çekme, sıralama ve filtreleme işlemleri kullanılabilir. Örneğin, iki tablo arasında JOIN kullanarak müşterilerin siparişlerini detaylı şekilde listelemek mümkündür. Bu sorguda, ORDER BY komutu kullanarak istenilen sütuna, DESC ve ASC gibi kelimeler ekleyerek sıralama işlemi yapılabilir.
- Müşteriler Tablosu:
- Müşteri ID
- Adı Soyadı
- E-posta
- Siparişler Tablosu:
- Sipariş ID
- Ürün Adı
- Müşteri ID
Yukarıdaki örnek senaryolar gibi farklı tablolar arasında JOIN, UNION, INTERSECT veya EXCEPT kullanarak veri çekme, sıralama ve filtreleme işlemleri yapılabilir. Bu sayede, birden fazla tablo kullanmanın avantajlarından yararlanarak veri işleme süresini kısaltabilir ve verilerinizi daha detaylı şekilde analiz edebilirsiniz.
Çalışanların ve Departmanların Listelenmesi
Bir şirkette çalışanların bilgileri çoğunlukla çalışanlar ve departmanlar adlı ayrı tablolarda tutulur. Bu durumda INNER JOIN kullanarak çalışanların ve departmanların birleştirilmesi gerekmektedir.
Aşağıdaki örnek sorguda INNER JOIN kullanarak çalışanların adları, soyadları, pozisyonları ve çalıştıkları departmanları listeleyebiliriz:
Çalışanlar Tablosu | Departmanlar Tablosu |
---|---|
|
|
SELECT calisanlar.ad, calisanlar.soyad, calisanlar.pozisyon, departmanlar.departman_adıFROM calisanlarINNER JOIN departmanlarON calisanlar.departman_id = departmanlar.id;
Bu sorgu, çalışanların adlarını, soyadlarını, pozisyonlarını ve çalıştıkları departmanların adlarını içermektedir. INNER JOIN, iki tablo arasındaki eşleşen verileri birleştiren bir işlem olarak çalışır. Calisanlar tablosundaki departman_id sütunu, Departmanlar tablosundaki id sütunu ile eşleşir ve sorgu sonucunda çalışanlarin departman adları ile birlikte listelenir.
Bir çoğu SQL sorgusunda kullanılan INNER JOIN, birden fazla tablonun birleştirilmesi için en yaygın kullanılan yöntemdir. Bu işlem, farklı tablolardaki verileri birlikte listeleyerek etkili bir şekilde raporlanması sağlar.
Müşterilerin ve Siparişlerinin Listelenmesi
MySQL'de birden fazla tablonun kullanımı sayesinde farklı verileri bir arada listeleme fırsatı sunulur. Fakat bu durumda hangi verilerin hangi koşullarda listeleneceği önem kazanır. Örneğin, müşterilerin ve siparişlerin birleştirilmesi için hangi sütunları kullanacağımız ve bu sütunları hangi koşullarla listelememiz gerektiği belirlenmelidir.
Birleştirilecek olan tabloların sütunlarına göre belirli koşullar kullanarak veri filtreleyebiliriz. Sıralama işlemleri de yaparak veriyi istediğimiz şekilde listeleyebiliriz. Örnek olarak, aşağıdaki sorguda müşterilerin siparişlerine erişilebilir:
Müşteriler Tablosu | Siparişler Tablosu |
---|---|
customer_id | order_id |
first_name | customer_id |
last_name | order_date |
Bu iki tablonun birleştirilmesi için INNER JOIN kullanılabilir:
SELECT *FROM customersINNER JOIN ordersON customers.customer_id = orders.customer_id;
Bu sorgu, müşterilerin ve siparişlerin tüm sütunlarını birleştirir. Fakat daha filtreleme olacak şekilde sorguyu revize edebiliriz:
SELECT customers.first_name, customers.last_name, orders.order_dateFROM customersINNER JOIN ordersON customers.customer_id = orders.customer_idORDER BY orders.order_date DESC;
Bu sorgu, müşterilerin adlarını ve soyadlarını ile sipariş tarihini listeler ve en son yapılan siparişleri en üstte gösterir.
MySQL'de birden fazla tablo kullanımı, işlem gücü ihtiyacını artırsa da doğru bir şekilde kullanıldığında verileri daha doğru ve hızlı bir şekilde listeleyebilir. Dikkatle ve özelleştirilmiş sorgularla çalışırken, yararlı bilgileri elde edebilirsiniz.