Merhaba arkadaslar uzun zamandir yazmiyorum farkindayim ancak cok yogun oldugumu soylemk istiyorum. Inanin yazacak o kadar cok seyim varki bugun baslasam 1 haftaya ancak bitiririm. Yavas yavas zaman buldukca konulara deginecegim. Ancak simdi size cok isime yarayan ve gercekten php mysql programlamada webmasterin mutlaka bilmesi ve ogrenmesi gereken bir uygulamayi anlaracagim. Bu tablolarin birbiri ile iliskisel degerlerinin alinarak birden fazla sorguyu tek sorguya dusurmeye yarayan JOIN islemidir..

Daha net ve kisa bir ornek vermek gerekirse: Mysql tablomuzda birden fazla iliskili tablo varsa bunlari birdenf azla sorgu ile degilde tek sorgu ile cekmeye yariyor. bu bize hem sorgu sayisindan dusus hem hiz, hemde yazmada kolaylik sagliyor..

IPUCU: sunucuda my.cnf ayarlarinda join duzenlemeleri mevcutdur, eger bu ayarlar guzel yapilmis ise join uygulamalari hermzaman hizli ve sunucuyu yormayacak sekilde isleyecektir.

ONERI: Php ve MLsql programlamaya baslamadan once database yapinizi iyi duzenlemeniz ve plana dokmeniz gerek. cunku ilerde cok buyuk zorluklar yasayabilirsiniz. bu yuzden olusturdugunuz her tabloda baska bir tablo ile iliski barindiran kisimlar icinde duzenleme yapmanizi ve JOIN islemini kullanmanizi siddetle oneriyorum.

Kisa Bir ornek: 4 tablomuz olsun. Tablolar : arabalar, renkleri, markalari, sahibi
bu 4 tabloyu tek sorguda birbirine baglamak icin join islemini kullanip tek sorgu ile 4 sorgunun isini yapmis olacagiz ve sorgu sayisida dustugu icin mysql programini rahatlatacagiz..

Fazla zamanim olmadigi icin kisa kesecegim ve size join uygulamasinda cok kolaylik saglayacak kafa yormadan birlestirme islerini yapacak bir programla tanistirayim. ilerde bir cok konuda da yardimciniz olacaktir.
Programin ismi: SQL Maestro for MySQL

Bu aralar uzerinde calistigim Ka-press uyuglamasinda bir cok tabloyu join yontemi ile listeliyorum bu bana en azindan 10 sorgu eksilterek kazanc sagliyor. Ornek tablo uygulamasi icin size asagidaki resme bakmanizi oneriyorum:
Free Image Hosting At site

ben direk kisa bir anlatimdan sonra program icin baska bir yerden join uygulamasi icin yazilmis bir yaziyi alt da paylasacagim, boylece konuyu daha iyi anlamis olursunuz..

Programi indirip kuralim: SQL Maestro for MySQL
Programin guzel tarafi sunucunuzdaki mysql disariya acik degilse ssh bilgileriyle erisim imkani saglayarak butun databaselerde islem yapabilmenizi sagliyor..

Programi kurduktan sonra acin, ilk actiginizda sizden giris bilgileri isteyecek, burada ssh ile baglanmayi secerek bilgilerinizi girip devam edin, sonrasindasizden veritabani secmenizi istecek, veritabanlarin hepsini secebilirsiniz, yada sadece islem yapacaginiz veritabanini secebilirsiniz. devam edip ready yapacaksiniz ve veritabani eklenmis olacak. Daha iyi anlayabilmeniz icin asagidaki ornek resimleri sirasina ve icerisindeki sayilara gore takip edin:
Free Image Hosting At site

Free Image Hosting At site

Free Image Hosting At site

En sonunda ready dedikten sonra Database programin sol tarafinda gorunecektir. ona 2 kere tiklayarak acin.
Sonrasinda asagidaki resimlerdeki sirayi izleyin ve birlestirme icin aracimizi acalim:

Free Image Hosting At site

Free Image Hosting At site

Bunlardan sonra tablolar gelecek ornek asagidaki gibi:
Free Image Hosting At site

burada yapmaniz gereken onemlidir arkadaslar. Birlestirme yapacaginiz tabloyu maus ile tutup siger tablodaki eslesecek alanin uzerine getirip birakmani gerek. Bu sekilde birlestirme yapacaginiz yani eslesen alanlari birbirine baglayin. ve Asagidaki resimdeki gibi ustden editor kismini acin:
Free Image Hosting At site

isde burada da sizin php kodlariniz duruyor, hic kafa yormadan dusunmeden join islemi icin gerekli kodlariniz hazir. Sonrasinda bunu phpde kullanabilirsiniz. Kodlarin calisip calismadigini yada mantigin dogru oldugunu anlamak icin programdaki Execute query kismina tiklayip editorun yanindaki result‘a bakabilirsiniz. Eger eslesmis bir kayit varsa burada listelenecektir. Boylece dogrulunu kanitlamis olacaksiniz.

Benden bu kadar bir baska sitedeki jion yazisinida asagida paylasiyorum anlamayanlar icin yardimci olacak niteliktedir..

INNER JOIN İşlemi (Burasi alinti kisimdir, yazan kisi hakkinda bilgim yok)
Ortak bir alanda eşleşen değerler olduğunda iki tablonun kayıtlarını birleştirir.

Sözdizimi

INNER JOIN

işleminin bölümleri şunlardır:

tablo1, tablo2: İçinden kayıtların birleştirileceği tabloların adıdır.
alan1, alan2: Birleştirilen alanların adıdır. Alanlar sayısal değilse, aynı veri türünde olmalı ve aynı türde veriler içermelidir, ancak alanların aynı ada sahip olmaları gerekmez.
karşılaştırma: Herhangi bir karşılaştırma işlecidir: “=,” “<,” “>,” “<=,” “>=,” or “<>.”

Uyarılar

INNER JOIN işlemini herhangi bir FROM yan tümcesinde kullanabilirsiniz. Bu, en sık kullanılan birleştirme türüdür. İç birleşimler, iki tabloda ortak olan bir alanda eşleşen değerler olduğunda her iki tablonun kayıtlarını birleştirirler.

INNER JOIN’i, Bölümler ve Çalışanlar tablolarında, bölümlerdeki tüm çalışanları seçmek için kullanabilirsiniz. Buna karşılık, tüm bölümleri (bölüme atanmış çalışan olmasa bile) veya tüm çalışanları (herhangi bir bölüme atanmamış olsa bile) seçmek için, bir dış birleşim oluşturmak üzere LEFT JOIN veya RIGHT JOIN işlemini kullanabilirsiniz.

Not veya OLE Nesnesi verileri içeren alanları birleştirmeyi denerseniz bir hata oluşur.

Benzer türdeki herhangi iki sayısal alanı birleştirebilirsiniz. Örneğin, benzer türlerde olduklarında OtomatikSayı ve Uzun alanlarını birleştirebilirsiniz. Ancak, Tek ve Çift türündeki alanları birleştiremezsiniz.

Aşağıdaki örnek, Kategoriler ve Ürünler tablolarını KategoriNo alanına göre nasıl birleştirebileceğinizi gösterir:

Önceki örnekte KategoriNo, birleştirilen alandır ancak SELECT deyiminde yer almadığı için sorgu sonuçlarında bulunmaz. Birleştirilen alanı bulundurmak için, alan adını SELECT deyiminde yazın (örneğimizde Kategoriler.KategoriNo).

Aşağıdaki sözdizimini kullanarak, JOIN deyimi içinde çok sayıda ON yan tümcesini de bağlayabilirsiniz:

Aşağıdaki sözdizimini kullanarak içiçe JOIN deyimleri de oluşturabilirsiniz:

Bir LEFT JOIN veya bir RIGHT JOIN bir INNER JOIN içinde içiçe yer alabilir ancak bir INNER JOIN bir LEFT JOIN veya RIGHT JOIN içinde yer alamaz.

PAYLAS
Önceki İçerikKriz Yönetimi
Sonraki İçerikMüslüman mısınız? Mümin misiniz?
Bende 1 yumurta var, sende 1 yumurta var. Ben sana 1 yumurta versem, sen bana bir yumurta versen, bende 1 yumurta sende 1 yumurta olur.Bende 1 bilgi var, sende 1 bilgi var. Ben sana 1 bilgi versem, sen bana 1 bilgi versen, bende 2 bilgi, sende de 2 bilgi olur - Konfüçyüs - Yazilarimi artik kuaza da yayinliyorum (zamanim oldukca) :)

Bir Cevap Yazın