Merhaba, Ziyaretçi. Lütfen giriş yapın veya üye olun.
Aktivasyon mailiniz gelmediyse buraya tıklayın.
09, 2008, 04:44:52 am
42745 Mesaj 8091 Konu Gönderen: 17931 Üye
Son üye: medist
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ı 7818 defa)
Allow-Man
Alaattin Kahramanlar
PHP Öğrencisi
*
Offline Offline

Mesaj Sayısı: 111



Üyelik Bilgileri WWW
İleri MySQL Komutları
« : 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  Grin

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 : 22, 2005, 08:46:39 am »

yeni sitede bulunur inşallah oraya saklayalım Smiley
Logged

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

Mesaj Sayısı: 111



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

Eyvallah, merakla bekliyoruz  Smiley
Logged

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

Mesaj Sayısı: 675


iLahi PHP ;)


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

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

arakin
Ziyaretçi


E-Posta
Ynt: İleri MySQL Komutları
« Yanıtla #4 : 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 : 02, 2007, 05:11:25 am »

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

Mesaj Sayısı: 27


Üyelik Bilgileri
Ynt: İleri MySQL Komutları
« Yanıtla #6 : 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 : 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: 26, 2007, 01:58:14 pm Gönderen: emrenika » Logged

[color=FF0000]Emrenik@[/color][/url][/font][/size]
raincu
PHP Stajyeri
**
Offline Offline

Mesaj Sayısı: 381


Php<I


Üyelik Bilgileri WWW
Ynt: İleri MySQL Komutları
« Yanıtla #8 : 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 : 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 Smiley

Ş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:  


Turk-Php.Com Forum | SMF Forum Software © 2005, Simple Machines LLC. All Rights Reserved.