MySQL, Inner Join ile birleşir

Bu ders için Mysql'in bize ücretsiz olarak sağladığı örnek veritabanlarından birini kullanacağız, adı Sakila, ayrıca resmi Mysql web sitesinden diğer örnekleri de indirebiliriz.

Birçok üniversite bunları MySQL'i test etmek ve programlamak için kullanır.
Sonra indirilen dosyayı açıyoruz ve iki dosya göreceğiz sakila-schema.sql veritabanı yapısını içeren ve sakila-data.sql Örnek verileri içeren A.
Bu veri tabanının amacı, hem yazılım geliştirmek hem de sql sorgularını test etmek için bir test ortamı sağlamak ve böylece MySQL'in sunduğu imkanlarla testler yapabilmektir. Sakila'nın yapısı karmaşıktır, 1000 kaydı ve çoklu ilişkileri vardır.
Sakila veritabanı ayrıca görünüm, saklı yordam ve tetikleyici örnekleri içerir.
Bu veritabanı, şubeleri ve satıcıları olabilecek bir film kiralama mağazası olduğunu varsayar.
Süreç, bir filmi kiralamak için önce filmin mevcut veya stokta olduğunu teyit etmemiz gerektiğini ve ardından müşterinin veritabanında olup olmadığını kontrol etmemiz gerektiğini ve filmi veya DVD'yi müşteriye atayacağız. Satışı da ödeme tablosuna eklemeliyiz. İş kurallarına bağlı olarak, müşterinin ödenmemiş bakiyesi olup olmadığını kontrol etmek de gerekebilir.
İstemcinin adıyla var olup olmadığını kontrol etmek için basit bir sorgu yapabiliriz:
 Customer.customer_id, customer.store_id, CONCAT (customer.first_name, '', customer.last_name) öğesini müşteriden Müşteri olarak seçin, burada customer.first_name 'Carlos% gibi 
Bu öğreticide, ayrıntılı olarak açıklanacak birkaç örnek gerçekleştirerek birleştirilmiş sorgulara odaklanacağız.

SQL Inner Join yan tümcesi


Bir SQL JOIN yan tümcesi, aralarındaki ortak bir alana dayalı olarak iki veya daha fazla tablodaki satırları birleştirmek için kullanılır.
İÇ BİRLEŞİM tablolardan birleştirme koşulunu karşılayan tüm birleştirilmiş satırları döndürür.

Örnek A


Bunun için hangi müşterilerin film kiraladığını bilmek istiyoruz, Müşteri tablosuna ve Kiralama masasına sahibiz, bu nedenle Kiralama masasında hangi müşterilerin olduğunu bilmeliyiz.
 Rental.rental_id, customer.first_name, customer.last_name, Rental.rental_date, Rental.return_date'i kiralamadan seç 
Bu fıkranın uygulanmasının sonucu aşağıdaki olacaktır:

Bu durumda, sorguyu Where ile yapmakla aynıdır:
 Rental.rental_id, customer.first_name, customer.last_name, Rental.rental_date, Rental.return_date'i kiralamadan seçin, burada kiralama.customer_id = customer.customer_id 
Aradaki fark, SQL sorgusunun optimizasyonunda iç birleştirmenin biraz daha hızlı olacak olmasıdır.

Örnek B


Müşterilerle iletişime geçilebilmesi ve filmi iade etmelerinin istenebilmesi için vadesi geçmiş kiralamaların günlük bir listesini oluşturan iki mağazamız veya şubemiz var.
Bu listeyi oluşturmak için kiralama tablosunda dönüş tarihi NULL olan, yani tarihi olmayan ve kiralama tarihinin müşterinin filmi tutabileceği zamanı veya gün sayısını aştığı filmler için arama yapmalıyız. Bu koşul yerine getirilirse, müşterinin film için borcu vardır ve filmin adı, müşterinin adı, telefon numarası ve e-postası ile birlikte listede gösterilmelidir. Ayrıca filmin ödenip ödenmediğini, hangi tarihte ödendiğini ve ne kadar ödendiğini de göstereceğiz.
 CONCAT (customer.last_name, ',', customer.first_name) OLARAK müşteri, adres.telefon, film.başlık, müşteri.email, kiralama.dönüş_tarihi, ödeme.ödeme_tarihi, ödeme.amount'u SEÇİN kiralamadan İÇERİ KATILIN müşteriye kiralama.customer_id = customer.customer_id INNER JOIN adresi ON customer.address_id = address.address_id INNER JOIN ON rent.inventory_id = Envanter.inventory_id INNER JOIN film ON envanter.film_id = film.film_id INNER JOIN ödeme ON ödeme.rental_id = rent.rental_id NEREDE kiralama .return_date NULL VE rent_date + INTERVAL film.rental_duration DAY <CURRENT_DATE () 

Örnek C


Bunun için en çok film kiralayan müşterinin hangisi olduğunu bulmak istiyoruz, aşağıdaki maddeyi yazıyoruz.
 Müşteri olarak CONCAT'ı (customer.first_name, '', customer.last_name) seçin, rental.customer_id'yi Toplam olarak rent.customer_id'de müşteri.customer_id grubuna göre kiralama.customer_id ***** toplam olarak sayın azalan 
Bu yüzden performansı test etmek için Mysql ile birçok test yapabiliriz. Başka bir öğreticide daha karmaşık sorgularda ilerleyeceğiz:

Örnek C


Bunun için en çok film kiralayan müşterinin hangisi olduğunu bulmak istiyoruz, aşağıdaki maddeyi yazıyoruz.
 Müşteri olarak CONCAT'ı (customer.first_name, '', customer.last_name) seçin, rental.customer_id'deki kiralık dahili müşteriden Toplam olarak sayın (kiralık.müşteri_kimliği). azalan 
Bu yüzden performansı test etmek için MySQL ile birçok test yapabiliriz. Başka bir eğitimde daha karmaşık sorgularda ilerleyeceğiz.

Bu Eğitimi beğendiniz ve yardım ettiniz mi?Yazara olumlu puan vermek için bu düğmeye basarak yazarı ödüllendirebilirsiniz.

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave