Mysql Join Uygulaması

Veri tabanı işlemlerinde bir tablodan çalışabileceğimiz gibi birden çok tablolardan veriler çekmemiz ve bu verilere belli kriterler uygulamamız gerekebilir. Uygulamalarımızda her defasında bir veriyi çekip kontorol etmek ve buna istenen kriterleri uygulamak büyük kapsamlı projelerde karmaşıklığa ve kodların yavaş çalışmasına neden olabilir.

Örnek olarak kitap tablomuz ve seçilen kitapların yer aldığı galeri tablomuz olsun. Galeri tablomuzda kitabın id si ne göre işlemler yapacağız.
Kitap tablomuzda: id, isim ve kapak sütunları yer alsın.
Galeri tablomuzda ise, id, kitap_id sutunları yer alsın.

Şimdi seçilen yani galeri tablosunda yer alan verilere göre kitapları vitrin bölümümüzde gösteren kodları yazalım.

SELECT kitap.id as  kid, kitap.isim, kitap.kapak, galeri.id as gid, galeri.kitap_id FROM kitap, galeri WHERE kitap.id=galeri.kitap_id

Yukarıdaki kod satır ; “kitap.id as kid” ile kitap tablosundaki id  sutununu kid olarak aldık,”kitap.isim” ile kitap tablosundaki isim sutununu almış olduk,”kitap.kapak” ile kitap tablosundaki kapak sutunundaki veriyi almış olduk(Kitap kapağının adının tutulmuş olduğu alan). Sıra galeri tablosundaki verileri almaya geldi. “galeri.id as gid” ile galeri tablosundaki id yi gid olarak almış olduk, “galeri.kitap_id” ile galeri tablosundaki kitap idlerinin tutulduğu bölümü çekmiş olduk. Daha sonra “WHERE kitap.id=galeri.kitap_id” ile kitap id si galeri tablosunda kitap_id sutununda yer alan yani galerimize eklenmiş olan verileri(kitapları) getir demiş olduk.
“as” kodu ile değişken tanımlamış oluyoruz.

Bu örnegimizi biraz daha geliştirerek satış içi olan ve galeride yer alan kitapları getirmek isteseydik.Satış içi olarak kitap tablomuzda durum sutununun yer aldığını farz edelim; ve durum=1 ise satış içi durum=0 ise satış dışı olsun kitabımız.
SELECT kitap.id as  kid, kitap.isim, kitap.kapak, galeri.id as gid, galeri.kitap_id FROM kitap, galeri WHERE kitap.id=galeri.kitap_id and kitap.durum=1

Yukarıdaki kod satırının en sonunda yer alan “and kitap.durum=1″ kodu ile ve kitap tablosunda durum ‘u 1 olan yani satış içi olan demiş olduk.

Mysql DATEDIFF Tarih Arası Hesaplama

Veri tabanımızda yer alan verilerin; kullanıcıların, kayıtlı olan stokların vb verilerin kaç gün önce eklendiğini veri tabanına hesaplıya biliriz. Veya üyenin kaç gün önce kayıt olduğu, en son kaç gün önce login olduğu vb işlemleride DATEDIFF(iki tarih arasını hesaplama) komutu aracılığı ile hesaplıya biliriz.

Örnek olarak kitap veri tabanımızda yer alan kitapların kaç gün önce veri tabanımıza kaydedildiğini hesaplıyalım.

SELECT DATEDIFF(NOW(),tarih) as gecen_gun FROM kitap;

[ad#satir]

Yukarıdaki kodlarda; NOW() şimdiki zamanı belirtiyor, tarih ise veri tabanımızdaki tarih sütunundan gelen tarih bilgisini belirtmektedir. Gelen sonuçları gecen_gun adıyla oluşturmuş olduğumuz sana bir sütunda göstermiş olduk.

Mysql İç İçe Select

Bazen bir sorgunun içinde başka bir sorgu yer alabilir, bu gibi durumlarda iç içe select yapısını kullanabiliriz.
Örnek olarak;

Kitap durum tablomuz olsun ve dışarıdaki kitaplarımız bulmak isteyelim. Dışarıdaki kitapların numaralarını ödünç tablosundan çekecek bir sorgu yazalım.

SELECT kitapno From odunc WHERE geldimi=0;

Bunu , kitaplar tablosundan karşılık gelen kitap numaralarını çekecek şekilde IN() komutu ile kullanalım.

SELECT * FROM kitap WHERE kitapno IN(SELECT kitapno FROM odunc WHERE geldimi='0');

Mysql Lower ve Upper Komutu

Lower komutu karakter dizisini küçük harflere çevirir. Örnek olarak haber tablomuzda id’si 1000 olan baslik alanının tüm verilerini küçük harfe çevirelim.

SELECT LOWER(baslik) FROM `haber` WHERE id=1000;

Upper komutu karakter dizisini büyük harflere çevirir. Örnek olarak haber tablomuzda id’si 1000 olan baslik alanının tüm verilerini büyük harfe çevirelim.

SELECT UPPER(baslik) FROM `haber` WHERE id=1000;