
Sql join turleri
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Sql join turleri
Sql islemlerinde Join tipleri kafa karistirici olabilir. Asagidaki resim join turlerini daha anlasilir olarak acikliyor.


Re: Sql join turleri
Selam, CROSS JOIN Örneğini göremedim..
Bir kelimenin anlamını öğretsen bile yeter..



- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: Sql join turleri
cross join burdaki kume ile gosterme mantigina uymadigi icin eklenmemis olmali.
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Sql join turleri
cross join ile inner join aynı kapıya çıkar dersem yalan olmaz sanırım 
Test için SQL Server üzerinde geçici tablo oluşturup örnek çalışma yapınca bu sonuç çıktı.Bu kayıtlarla çalışılırsa yukarıdaki küme çalışmalarının kayıt karşılığı örnek uygulama ile görülecektir.

Test için SQL Server üzerinde geçici tablo oluşturup örnek çalışma yapınca bu sonuç çıktı.
Kod: Tümünü seç
create table #t1 (id int)
create table #t2 (id int)
insert into #t1 (id) values (1)
insert into #t1 (id) values (2)
insert into #t1 (id) values (3)
insert into #t2 (id) values (2)
insert into #t2 (id) values (3)
insert into #t2 (id) values (4)
Kod: Tümünü seç
select #t1.id, #t2.id from #t1, #t2 where #t1.id=#t2.id
select #t1.id, #t2.id from #t1 inner join #t2 on #t1.id=#t2.id
select #t1.id, #t2.id from #t1 cross join #t2 where #t1.id=#t2.id
select #t1.id, #t2.id from #t1 left join #t2 on #t1.id=#t2.id
select #t1.id, #t2.id from #t1 right join #t2 on #t1.id=#t2.id
select #t1.id, #t2.id from #t1 full outer join #t2 on #t1.id=#t2.id
En son sabanakman tarafından 04 Şub 2011 10:37 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: Sql join turleri
cross join ile inner join ayni kapiya cikmamasi lazim
cross join bildigimiz kartezyen carpima denk geliyor. select * from a,b de ki olay yani...

cross join bildigimiz kartezyen carpima denk geliyor. select * from a,b de ki olay yani...
- sabanakman
- Kıdemli Üye
- Mesajlar: 3081
- Kayıt: 17 Nis 2006 08:11
- Konum: Ah bi Antalya olaydı keşke (Ankara)
Re: Sql join turleri
Görüntüde sonuç aynı fakat arka planda çalışma mantığı farkı nedeniyle inner join çok daha üst düzeyde performansla sonuç vermektedir ama sonuç olarak "Küme görüntü karşılığı" inner join ile aynı sonucu veriyor. Where şartı verilmesi şart değil gerçi. O zaman kümenin her elemanına karşılık diğer tüm kümeden oluşuyor
Şimdi uyandım, kartezyen çarpım şeklen nasıl gösteriliyordu ki 


Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
_________________
Derin olan kuyu değil kısa olan iptir. - .
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: Sql join turleri
kartezyen carpimi okulda soyle gosteriyorduk
a kumesinde ki her elemandan b kumesindeki her elemana birer ok ciziyorduk
eksiden alinti
a={n,d,h}
b={001,002,003}
olsun
axb kartezyen çarpımı ise şu kümedir:
{ (n,001),(n,002),(n,003),(d,001),(d,002),(d,003),(h,001),(h,002),(h,003) }
a kumesinde ki her elemandan b kumesindeki her elemana birer ok ciziyorduk

eksiden alinti
a={n,d,h}
b={001,002,003}
olsun
axb kartezyen çarpımı ise şu kümedir:
{ (n,001),(n,002),(n,003),(d,001),(d,002),(d,003),(h,001),(h,002),(h,003) }
Re: Sql join turleri
Gerçekten de o kadar kafa karıştırıcımı acaba 

Bir kelimenin anlamını öğretsen bile yeter..



Re: Sql join turleri
left join tableb on 1=1 de cross çarpım yaparsadettinpolat yazdı:cross join ile inner join ayni kapiya cikmamasi lazim![]()
cross join bildigimiz kartezyen carpima denk geliyor. select * from a,b de ki olay yani...

Kod: Tümünü seç
INSERT INTO TABLE1 (ID)
VALUES (1);
INSERT INTO TABLE1 (ID)
VALUES (2);
INSERT INTO TABLE1 (ID)
VALUES (3);
INSERT INTO TABLE1 (ID)
VALUES (4);
INSERT INTO TABLE1 (ID)
VALUES (5);
INSERT INTO TABLE1 (ID)
VALUES (6);
Kod: Tümünü seç
INSERT INTO TABLE2 (ID)
VALUES (1);
INSERT INTO TABLE2 (ID)
VALUES (2);
INSERT INTO TABLE2 (ID)
VALUES (3);
INSERT INTO TABLE2 (ID)
VALUES (4);
INSERT INTO TABLE2 (ID)
VALUES (5);
INSERT INTO TABLE2 (ID)
VALUES (6);
Kod: Tümünü seç
select
table1.id Table1id,
table2.id table2id
from table1
left join table2 on 1=1
Kod: Tümünü seç
1 1
1 2
1 3
1 4
1 5
1 6
2 1
2 2
2 3
2 4
2 5
2 6
3 1
3 2
3 3
3 4
3 5
3 6
4 1
4 2
4 3
4 4
4 5
4 6
5 1
5 2
5 3
5 4
5 5
5 6
6 1
6 2
6 3
6 4
6 5
6 6
36 kayıt
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Re: Sql join turleri
kandirmaca var burdaLost Soul yazdı: left join tableb on 1=1 de cross çarpım yapar![]()
