En iyi yanıtlayıcılar
Sql Tablo İlişkilendirme Problemi.

Soru
-
Merhaba arkadaşlar bu problem her projemde başıma geliyo. Değişik yöntemlerle çözüyorum ama bu sefer çözemedim. Sanırım sql ile ilgili bilmediğim bişey sonucu oluyor hep.
Problemim şu;
Örneğin bir a tablosu var bir de b tablosu var. Ben bu tabloları Where komutu ile veya inner join ile birbirine bağlıyorum idlerinden. sonra diyorumki ismi umut olanlar listelensin. Böyle yapınca a tablosunda olan ama b tablosunda kaydı olmayanı eklemiyor. Mesela a tablosunda umut b tablosunda duran yazıyorsa çıkıyor isim ve soy ismi. Ama a tablosunda umut yazsın b tablosunda ise umut kaydına ilişkin bir değer bulunmasın. böyle olunca bunu es geçiyor. Gelişmiş arama yaparkende büyük sıkıntı yaratıyor bu durum. En az 5 tablo birbirine bağlıyorum. Böyle düşünerek cevap verirseniz sevinirim.
Şimdiden Teşekkür ederim.
Yanıtlar
-
Yararlı.
"Basitçe açıklayamıyorsan eğer, yeterince anlayamamışsındır." Alb. Einstein
http://www.tiravoglu.com- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 23 Kasım 2012 Cuma 12:30
Tüm Yanıtlar
-
inner join ile yapacağınız sorgular id ler eşleşmiyorsa zaten seçilmez. Arama sorgusunda bir mantık hatası yapıyor olabilirsiniz. Tablolarınızı ve yapılarını bilmiyorum ama, benim önerim arama işini union ile sorguların bileşim kümesini alarak yapmanız yönünde olacaktır. Örnek;
select 'haberdetay.aspx?id=' + Id as Link, Başlık from Haberler where Başlık like '%umut%' union select 'makaledetay.aspx?id=' + Id as Link, Başlık from Makaleler where Başlık like '%umut%' union select 'yorumlar.aspx?id=' + Id as Link, Mesaj as Başlık from Yorumlar where Başlık like '%umut%'
e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
- Yanıt Olarak Öneren Ali Rıza İnceoğlu 20 Kasım 2012 Salı 07:14
-
cmdKomut = new SqlCommand("Select * From Kullanicilar INNER JOIN UyeBilgileri On Kullanicilar.ID = UyeBilgileri.UyeID INNER JOIN EgitimBilgileri On Kullanicilar.ID = EgitimBilgileri.UyeID INNER JOIN PcBilgi On Kullanicilar.ID = PcBilgi.UyeID INNER JOIN IsTecrubeleri On Kullanicilar.ID = IsTecrubeleri.UyeID " + strSorgu + " and CvDurum = 'Aktif' Order By Kullanicilar.ID, UyeBilgileri.UyeID", dbBag);
Sorgum bu. strSorgu yazan kısımda belirli aralıkları alıyorum where kontrolüne. Bahsettiğinizi anlamadım açıkcası. Biraz daha detay verebilir misiniz ?
-
Aynı problemi bende yaşamıştım :) Left veya right join kullanın o zaman o değerler NULL olarak geliyor
Yani select * from anatable as a left join alttable as at on at.ID=a.ID
Muhtemelen bu kod işinizi görecektir. Deneyerek sonucu iletirmisiniz lütfen ?
Just a .net developer.
-
Yararlı.
"Basitçe açıklayamıyorsan eğer, yeterince anlayamamışsındır." Alb. Einstein
http://www.tiravoglu.com- Yanıt Olarak İşaretleyen Ali Rıza İnceoğlu 23 Kasım 2012 Cuma 12:30