Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.
Aktivasyon mailiniz gelmediyse buraya tıklayın.
Mayıs 13, 2008, 06:26:42 pm
41812 Mesaj 9080 Konu Gönderen: 17479 Üye
Son üye: umit_cbn
Turk-Php.Com Forum  |  Turk-PHP  |  Makale İstekleri ve Yorumlar  |  İleri MySQL Komutları « önceki sonraki »
Sayfa: [1] Yazdır
Yazan Konu: İleri MySQL Komutları  (Okunma Sayısı 7233 defa)
Allow-Man
Alaattin Kahramanlar
PHP Öğrencisi
*
Offline Offline

Mesaj Sayısı: 111



Üyelik Bilgileri WWW
İleri MySQL Komutları
« : Kasım 21, 2005, 04:35:06 pm »

INNER JOIN, LEFT JOIN vesaire gibi benim her gördüğümde korktuğum bir MySQL makalesi istesek, peçeteye mi yazcaz  ;D

Ellerinize sağlık şimdiden...
Logged

while(1) work;
mudkicker
Arif Ender
Admin
*
Offline Offline

Mesaj Sayısı: 873

Mastered PHP


Üyelik Bilgileri WWW
Ynt: İleri MySQL Komutları
« Yanıtla #1 : Kasım 22, 2005, 08:46:39 am »

yeni sitede bulunur inşallah oraya saklayalım :)
Logged

Allow-Man
Alaattin Kahramanlar
PHP Öğrencisi
*
Offline Offline

Mesaj Sayısı: 111



Üyelik Bilgileri WWW
Ynt: İleri MySQL Komutları
« Yanıtla #2 : Kasım 22, 2005, 09:04:17 am »

Eyvallah, merakla bekliyoruz  :)
Logged

while(1) work;
EvrenWeb
Evren Bayraktar
PHP Memuru
***
Offline Offline

Mesaj Sayısı: 633


iLahi PHP ;)


Üyelik Bilgileri WWW
Ynt: İleri MySQL Komutları
« Yanıtla #3 : Şubat 06, 2006, 12:11:53 pm »

Evet arkadaslar şöyle bi çok sql komutunu kapsayan bi makale yazabilirmisiniz.. Hani yeni siteyede geçmişken diorum :)
Logged

arakin
Ziyaretçi


E-Posta
Ynt: İleri MySQL Komutları
« Yanıtla #4 : Şubat 10, 2006, 06:04:43 pm »

Tablo Birleştirmeleri *

Bir veritabanı tablosu, birbirinden kesin sınırlarla ayrılmış alanlardan ve her bir alanın diğer alandan bağımsız, ancak ilişkisinin olduğu yatay ve dikey olarak sıralanmış bilgiler içeren yapıdır diyebiliriz.
Veritabanı tablolarını listeler olarak düşünebiliriz, bir film listesi gibi veya bir kitap listesi gibi ancak bir farkla veritabanı tabloları tek değildir birden fazladırlar ve birbirleriyle ilişkilendirilmişlerdir.
Tablolar arası ilişkilendirmeler, bir istek sonucunda içerdiği bilgileri bize ne kadar çabuk yansıtacağı ile ilgilidir.
Bu bize veritabanının yapısınını baştan iyi tasarlamamızı, tablolararası ilişkilendirmeyi çok iyi planlamamızı gerektirir.

Eğer bir bilgi kümesinin tamamını bir tabloya yazarsak ilişkilendirmeden söz edemeyiz.
Tablolar  arasında bir ilişkilendirme yapılmadan açılacak bir sorgu sonucu tabloların içerdiği kayıt sayısı ile orantılıdır.
Eğer doğru ilişkilendirme ve doğru sorgu yoksa çok kayıt çok dakka demektir.
Bunu şöyle bir örnekle ifade edebiliriz, eğer tablolar arasında bir ilişkilendirme yoksa ve ilişkilendirmeli bir sorgu açılıyorsa bu kartezyen çarpımına neden olur,
yani 1.inci tablodaki her kayıt  2.inci tablodaki herkayıt ile ilişkilidir.

Bir örnek vermek gerekirse, 1.inci tabloda 500 kayıt var 2.inci Tabloda 1500 kayıt varsa birleştirme sonucu 500*1500=750000 kayıt olur. İlişkilendirilmemiş tablo birleştirmeleri veritabanının çalışmasına terstir.

TABLOLARI İLİŞKİLENDİRMEK

Her tablonun içindeki bilgilerinin kayıt sırasını tutan eşi olmayan bir değer tanımı vardır buna anahtar=key denir ve genelde id diye ifade edilir.

Bunu daha iyi şu şekilde ifade ederiz, bir tabloya her kayıt açılışında otomatik olarak artan, başka bir kayıtla karışmasını engeleyen sayısal ifadesidir.
Tablolar arası ilişkilendirme, bir tablonun diğer tabloya kendi anahtar değerini vermesi ile olur.
Eğer tablolar birbirlerine anahtar değerleri vermiyorsa birleştirmenin bir mantığı yoktur.

Örneğin bir işletmenin müşterilerini bir tabloya kaydedersek her müşterinin eşi olmayan birer numarası olacaktır ve yine başka bir tabloda bu numarayı kullanarak o müşteriye yaptığımız işlerin kayıtlarını yazabilir ve yine başka bir tabloda para giriş çıkışlarımızı yazarken aynı müşteri numarasını kullanabiliriz.
Böylelikle  tablolarımıza tek bir sorgu yani müşteri nolarını eşleştirerek sorgu açabiliriz.

Birleştirme tanımları:

Klasik Join
İki tabloyu birlikte sorgulamanın en kolay yolu, asıl tablodaki birincil anahtar ile ikinci tablodaki yabancı anahtarı birbirine eşitlemektir.

Örneğin
Kod:
SELECT Kitap.kitapNo,Odunc.kitapNo
FROM Kitap,Odunc
WHERE Kitap.kitapNo=Odunc.kitapNo

Left [Outer] Join
İki tablo arasında ilişkili sorgu yapılırken, birinci tablodaki tüm kayıtlar getirilir. 2. Tabloda ise sadece ilişkiye göre uygun kayıtlar sağ tarafına eklenir.

Örneğin
Kod:
SELECT uye.Adi,odunc.KitapNo
FROM uye LEFT JOIN odunc ON odunc.uyeNo=uye.uyeNo

Right [Outer] Join

İki tablo arasında ilişkili sorgu yapılırken, ikinci tablodaki tüm kayıtlar getirilir. 1. Tabloda ise sadece ilişkiye göre uygun kayıtlar sağ tarafına eklenir.

Örneğin
Kod:
SELECT Kitap.kitapAdi
FROM Kitap
RIGHT JOIN odunc ON odunc.KitapNo=Kitap.KitapNo
WHERE odunc.geldiMi=0

[Inner] Join
INNER JOIN en çok kullanılan tablo birleştirme yöntemidir. İki tablo arasında birleştirme yaparken, tablolardan her ikisinde de yer alan değerler seçilir, tek tabloda yer alan değerler seçilmez.
Aslında, Klasik Join ile INNER JOIN aynı şeydir. Sadece birleştirmede kullanılan teknik farklıdır.

Örneğin
Kod:
SELECT uye.Adi,odunc.KitapNo
FROM uye INNER JOIN odunc ON odunc.uyeNo=uye.uyeNo

Sadece iki tabloyu JOIN edilebilir diye bir kısıtlama yoktur. İkiden fazla tabloyu da ihtiyacımıza göre JOIN edebiliriz.

Örneğin
Kod:
SELECT Kitap.kitapAdi,uye.Adi,uye.Soyadi
FROM (odunc INNER JOIN Kitap ON Kitap.KitapNo=Odunc.kitapNo)
INNER JOIN uye ON uye.UyeNo = odunc.uyeNo


* Bu yazı http://www.verivizyon.com adresindeki yazılardan derlenmiştir.
Logged
Ulaş GÖRMEZ
Yeni Kullanıcılar
*
Offline Offline

Mesaj Sayısı: 1


Üyelik Bilgileri WWW
Ynt: İleri MySQL Komutları
« Yanıtla #5 : Şubat 02, 2007, 05:11:25 am »

saolasın süper bunlar ;)
Logged
evrenselbilisim
Yeni Kullanıcılar
*
Offline Offline

Mesaj Sayısı: 23


Üyelik Bilgileri
Ynt: İleri MySQL Komutları
« Yanıtla #6 : Eylül 01, 2007, 04:47:46 am »

Çok güzel saolasın.
Logged
emrenika
Emrenik@
Yeni Kullanıcılar
*
Offline Offline

Mesaj Sayısı: 2



Üyelik Bilgileri WWW
Ynt: İleri MySQL Komutları
« Yanıtla #7 : Kasım 26, 2007, 12:34:01 pm »

duydumki mysql kendisinin bizlere klaylık sağladığı bir komut varmış. diyelimki tekil veri saklayacağım bir alanım var ve mevcut alanları kontrol ederek farklı bir değer daha üreten bir komut istiyorum. bunu yapan mysql komutu varmış. bilen varsa söylerse çok sevinirim.
« Son Düzenleme: Kasım 26, 2007, 01:58:14 pm Gönderen: emrenika » Logged

raincu
PHP Stajyeri
**
Offline Offline

Mesaj Sayısı: 378


Php<I


Üyelik Bilgileri WWW
Ynt: İleri MySQL Komutları
« Yanıtla #8 : Kasım 26, 2007, 01:29:14 pm »



arakin arkadaşa teşekkürler iyi bir mesaj olmuş..

gayet güzel ve açıklayıcı...
Logged

ANLADIM İŞİ ; SANAT ALLAH I ARAMAKMIŞ ! GERİSİ BOŞ, ÇELİK ÇOMAKMIŞ.. (nfk)
legolas188
Yeni Kullanıcılar
*
Offline Offline

Mesaj Sayısı: 3


Üyelik Bilgileri WWW
Ynt: İleri MySQL Komutları
« Yanıtla #9 : Ocak 11, 2008, 04:48:31 am »

Ben Size baktığınızda daha anlaşılır olabilecek bir komut yazmak istiyorum.

Diyelim ki 2 tablo var a ve b tablosu ikisinde de ortak bir nokta "sid" değerler ortak olsun. siz öyle bir tablo istiorsunuz ki a tablosunda isim soyad tel.... b tablosundan tarih mesaj e-mail.

Her tabloda 15 tane sütun var Forum sayfasında anlatılan mysql komutuyla iki tablodaki verileri birleştirerek sorgu çektiğinizde ve her tabloda da 500 bin satır olsa vay o serverın haline :)

Şimdi bu kodla daha profesyonel olacağız.


Kod:
SELECT AA.isim, AA.soyad, AA.tel, BB.tarih, BB.mesaj, BB.mail
FROM a AA
RIGHT JOIN b BB on (AA.sid=BB.sid)
WHERE uid=32;

bu kod ile bize dönecek satırlara kısa bir kod ile ulaşabiliriz. FROM a "AA" AA ile yazdığım yerleri siz belirliyorusnuz. Bir nevi o sorgu içerisinde bağlantı kurmak için a tablosuna verdiğiniz isim. Bu şekilde 2 den çok tablo ile de bağlantı kurabilrisniz.

Mesela iki tablo arasında bir ortak nokta yok ama başka bir tabloda birisiytele eşleşen bir ortak nokta var ve o eşleşen diğer tablo ilede ilk tabloda bir ortak nokta var bu şekilde 3 tablo ile birbirine bağ kurarak bir seçim yapabilrsinz.


Logged
Sayfa: [1] Yazdır 
« önceki sonraki »
Gitmek istediğiniz yer: