none
Sql Tablo İlişkilendirme Problemi. RRS feed

  • 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.

    19 Kasım 2012 Pazartesi 16:29

Yanıtlar

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
    MCC

    19 Kasım 2012 Pazartesi 22:10
    Moderatör
  • 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 ?

    20 Kasım 2012 Salı 08:50
  • 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.

    20 Kasım 2012 Salı 16:19
  • Yararlı.

    "Basitçe açıklayamıyorsan eğer, yeterince anlayamamışsındır." Alb. Einstein
    http://www.tiravoglu.com

    20 Kasım 2012 Salı 18:53