Ceviz Forum

Geri Dön   Ceviz Forum > Programlama > Veritabanları & SQL

Cevapla
 
LinkBack Seçenekler
Eski 21/06/2005, 19:17   #1 (permalink)
cevizin en küçük avatarı
 
pirilti Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2004
Mesaj: 1,540
Uyarı iki ve daha fazla left join!

iki ve daha fazla feft join yapıldığında sorgu sonucları kartezyen çarpımı olarak veriyor...özellikle sum ve count kullanıldığında öğrenğin uye sayısı 3 mesaj sayısı 2 olsun ne yaparsanız yapın bunları 2*3 olarak veriyor...
bir left joinde 2 satır diğer left joinde 3 satır carpımı yada toplamı 2*3 oluyor group by yapıyorum ozamanda ana sorgu grouplanıyor ama left join ler grouplanmadığı için kaç tane left join varsa ve kaç değer dönderiyorsa değerler okadar artıyor...
çok sık sorduğumun farkındayım ama çözümleri gerçekten bulamıyorum bu anlatığım şeyde okadar basit değil snaırım...

örnek sorgu...
Alıntı:
select grup_id ,sum(grup_mesaj.mesaj=0) as mesaj_sayisi,sum(grup_uye.uye=3) as uye_sayisi from grup left join grup_uye on(grup_uye.grup_id=grup.grup_id) left join grup_mesaj on(grup_mesaj.grup_id=grup.grup_id) group by grup.grup_id
sorgu sonucunun şöyle olmasını istiyorum
grup_id=>1
mesaj_sayisi=>3
uye_sayisi=>2
ama şunda verdiği sonuc
grup_id=>1
mesaj_sayisi=>6
uye_sayisi=>6
__________________
Sarp Pirilti Yap Olsun...olmuyorsa başka bir yol/şey dene ve devam et
pirilti hatta değil   Alıntı Yaparak Yanıtla
Eski 29/06/2005, 02:57   #2 (permalink)
Cevizci
 
Üyelik Tarihi: 02/2005
Mesaj: 86
Varsayılan

Merhaba,

Left Join kullanmadan aşağıdaki select ifadeleri yardımı ile istediğin sonucu elde edebiliyor musun?


select
grup_id,
isnull((select sum(grup_uye.uye) from grup_uye where grup_uye.grup_id = grup.grup_id) ,0) as uye_sayisi,
isnull((select sum(grup_mesaj.mesaj) from grup_mesaj where grup_mesaj.grup_id = grup.grup_id) ,0) as mesaj_sayisi
from grup


Eralper
http://www.kodyaz.com
__________________
http://www.kodyaz.com
eralper hatta değil   Alıntı Yaparak Yanıtla
Eski 29/06/2005, 09:55   #3 (permalink)
cevizin en küçük avatarı
 
pirilti Adlı Üyenin Profil Grafiği
 
Üyelik Tarihi: 04/2004
Mesaj: 1,540
Varsayılan

aslında dediğin kodun farklı bir versiyonuyla olayı çözdüm subquery isnull yapmanın anlamı yok...zaten olayda subquery kullanmamak hedefleniyordu...
grup uyelerini left join mesjlarıda 3 tane subqueryle çekiyorum...bunun araştırmasını baya bir yaptım mysql kendi sayfasındada böyle çözülmemiş çözülmeyi bekleyen bir kaç soruda var...sanırım dediği şekilde yada benim yaptığım şekilde çözmenin dışında başka yolu yok...
__________________
Sarp Pirilti Yap Olsun...olmuyorsa başka bir yol/şey dene ve devam et
pirilti hatta değil   Alıntı Yaparak Yanıtla
Cevapla

Bookmarks

Seçenekler

Mesaj Yazma Hakları
Yeni mesajgöndermezsiniz
Cevap yazamazsınız
Dosya ekleyemezsiniz
Mesajınızı düzenleyemezsiniz

BB code is Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık

Benzer Konular
Konu Konuyu açana göre Forum Cevap En Son Mesaj
Daha Fazla uzantı tanıyabilme akkaraman PHP 2 24/11/2006 23:37
Mysql de left join sorunsalı? deathline Veritabanları & SQL 3 21/11/2005 14:30
left join sorunu pirilti Veritabanları & SQL 2 12/10/2005 10:17
left join sorunu! pirilti Veritabanları & SQL 18 23/09/2005 02:11
HATA : Daha Fazla tablo açılamıyor uyeol ASP 3 22/12/2004 14:57


Forum saati Türkiye saatine göredir. GMT +3. Şu anda saat 20:39.

Reklamlar & Desteklenenler
Hassas Valf | Hassas Kaplama | Antalyamız | Gazete | Ticari Bilişim | Hakan Müştak | Rüya Tabirleri | Kadın | Hastalıklar | Cepte msn ve e-posta | Webmaster | Antalya Aupair | Turkish Property Antalya | Forum | Chat | Perde | Adsl | Araba | bolindir.com | guncelle.com | livescore | Web Tasarım | evden eve nakliyat | forum | evden eve | sohbet | Resimcim| Kalifiye İnsan Kaynakları | Web Tasarım | Oyun | Yusuf KOÇ | Akın Yorulmaz | şiir | UFO | Web Tasarım | Oyunlar | Canlı Tv |


Forum Yazılımı: vBulletin Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright ©2001 - 2008, Ceviz.net