|
| Makaleler |
| Toplam Makale |
3330 |
| Yayında |
3150 |
| Bekleyenler |
180 |
| Görüntüleme |
13322649 |
|
|
|
MySQL ile Subselect Islemini Join kullanarak Basarmak
MySQL:-
-
-
-
-
-
-
- DROP TABLE IF EXISTS t1;
- DROP TABLE IF EXISTS t2;
- CREATE TABLE t1
- (
- col1 CHAR(10)
- );
- CREATE TABLE t2
- (
- col2 CHAR(10)
- );
- INSERT INTO t1 (col1) VALUES('a'),('b'),('c');
- INSERT INTO t2 (col2) VALUES('b'),('c'),('d');
-
- SELECT * FROM t1;
- SELECT * FROM t2;
-
-
- SELECT t1.* FROM t1, t2 WHERE t1.col1 = t2.col2;
Bu islemlerin ciktisi asagidaki gibidir:
ÇIKTI:
ÇIKTI:
ÇIKTI:
Yukaridaki ciktilardan neyi basarmak istedigimizi herhalde daha net anlamissinizdir...
Baska bir ornek vermek istersek:
Normalde bu tip islemler ile ornegin iki tablo arasindaki veriler birbiri ile alakali oldugunda bunlari cekip alabiliyoruz.Mesela "yazar" tablosunda "K_ID" (Kayit ID) alaninda birinci tabloda "1" degeri olsun.Bu "K_ID" ile her yazara otomatik bir numara veriyoruz.Tum yazarlari bu numara ile birbirinden ayirt ediyor olalim.
Bu durumda yukarida anlatilan "join" islemi icin kullanilacak ve ikinci tabloda ("yazilar" tablosunda) yazinin yazarini belirlemek icin kullanilan bir anahtar "Y_ID" (Yazar ID) olsun.Bu durumda yazilar tablosundaki bu alan da ornegin 4 adet "1" varsa bu demektir ki ("yazar" tablosundan alinan) "1" numarali yazarin "yazilar" tablosunda 4 adet kayidi bulunmaktadir.
Bu durumda "yazar" tablosundan alinan "1" degeri, ikinci tablomuz olan "yazilar" icinde "Y_ID" bolumunde sorgulandiginda karsimiza tam istedigimiz sonuclar gelmis oluyor.
Simdi de her iki tabloyi da sorgulayip birinin icinde olup da (sorgu icinde solda kullandigimiz tablo icinde olup da, sorgu icinde sag tarafta kullandigimiz tablo icinde olmayan) degerleri bulmaya calisalim.
Bu tip sorgulara "Left Join" yani "Sol'dan Katilim" denilmesinin sebebi de budur.Bu sorgu tekniginin birde "Right Join" yani "Sag'dan Katilim" olani vardir.
Sozu fazla uzatmadan ornek sorgumuza bakalim :
MySQL:-
-
-
-
-
-
- DROP TABLE IF EXISTS t1;
- DROP TABLE IF EXISTS t2;
- CREATE TABLE t1
- (
- col1 CHAR(10)
- );
- CREATE TABLE t2
- (
- col2 CHAR(10)
- );
- INSERT INTO t1 (col1) VALUES('a'),('b'),('c');
- INSERT INTO t2 (col2) VALUES('b'),('c'),('d');
-
- SELECT * FROM t1;
- SELECT * FROM t2;
-
- SELECT t1.* FROM t1 LEFT JOIN t2 ON t1.col1 = t2.col2
- WHERE t2.col2 IS NULL;
-
-
-
-
-
-
ÇIKTI:
ÇIKTI:
ÇIKTI:
Bu makale hakkında ek bilgi eklemek için buraya tıklayınız
Bu makalenin yazar yada kaynağını bildirmek için tıklayınız.
Eklenme tarihi: 3-2-2006 Okunma: 1921
|
| Bu Makaleye Verilen Puan: |
Bu makaleye puan verilmemiş.
|
Kullanıcı Yorumları
Bu makaleye yorum gönderilmemiş, ilk yorumu sen gönder !
İlgili Dökümanlar
|
|
|