none
MS SQL Join hk. RRS feed

  • Soru

  • Merhabalar,

    Bir konuda yardımlarınızı rica ediyorum.Addressmapping isimli tabloya aşağıdaki gibi join yaptığımda  sorunlar yaşıyorum parantez içinde ne yazmalıki belirteceğim şartları sağlayabilsin .İstediğim özetle;

    • RecordType=1 ve AdressType=0 şeklinde tek adresID varsa veya  bu adresle birlikte farklı Adressıd ve addresstype bulunuyorsa sadece RecordType=1 ve AdressType=0 olan adresidyi getirsin
    • 2.Sadece RecordType=1 ve  AdressType=1 olarak tek bir adresid varsa bu adresi getirsin
    • 3.RecordType=1 ve AdressType=1 adresi ile birlikte farklı adsressid ve addresstype lar varsa sadece RecordType=1 and  AdressType=1 olanı getirsinancak farklı adresidler arasında RecordType=1 ve AdressType=0  bulunuyorsa RecordType=1 ve AdressType=0 olan adresi getirsin .
      Bunun dışında benim atladığım sizlerinde eklemek istediği şartlar varsa belirtirseniz sevinirim.
      Aşağıdaki sorguda parantez içinde ne yazmalıyım?Önerilerinizi yardımlarınızı bekliyorum.Teşekkürler

    .....INNER JOIN (select * from AddressMapping am WHERE am.RecordType=1 and  am.AdressType=0 AND  am.[Status]=0 ) AS am ON cbcm.CbcmID=am.CbcmID_UserID

    24 Mayıs 2013 Cuma 13:05

Yanıtlar

  • parantez içine sanırım 

    (select top 1 adr.* from AddressMapping am INNER JOIN Address adr ON adr.AddressID=am.AddressID
    WHERE am.RecordType=1 and  am.AdressType=0 AND  am.[Status]=0)

    şekliden birşey yazmalısınız

    customer - AddressMapping - Address isimli tabloları kullandığınızı varsaydım

    28 Mayıs 2013 Salı 13:38

Tüm Yanıtlar

  • Merhaba,

    Ben okudum anlamaya calistim ama biraz karisik olmus. Biraz ornek vererek anlatirsaniz daha kolay yardimci olunur. Tabloda neler var siz neleri almak istiyorsunuz biraz ornek verek anlatirsaniz iyi olur

    24 Mayıs 2013 Cuma 14:33
  • Tabi açıklayayım.Örneğin Cus=1 müşterisinin adresine ulaşmak için addressmaping ile join yapıyorum ve adressid bilgisine daha sonrada address tablosuna join yapıp adres bilgisine ulaşıyorum.3 tablo yani.

    Addressmapping tablomda Cus=1 müşterisi için birden fazla adresid olabilir ve bunlardan sadece birinin adresid sini getirmeli ve yukarıdaki kriterlere göre olmalıdır.

    Ben customer tablosunu addressmaping ile join yaptığımda  adresidsi recordtype=1 ve adrestype=0 varsa bu adresi getirsin,eğer  addressmapingde sadece bir adresi varsa ve bu adresid recordtype=1 adrestype=1 ise yine bu adreside getirsin gibi şartlar ilk belirttiğim gibi olacaktır.Ayrıca status=0 olan adresid leri getirecektir.

    Sorgunun sadece bir kısmı olduğu için parantez içinde çözmeyi istiyorum

    ..dbo.customer INNER JOIN (select * from AddressMapping am WHERE am.RecordType=1 and  am.AdressType=0 AND  am.[Status]=0 ) AS am ON cbcm.CbcmID=am.CbcmID_UserID

    İlginiz için teşekkürler



    24 Mayıs 2013 Cuma 18:09
  • Merhaba,

    Bu şekilde yardım etmek zor gibi gözüküyor. Rica etsem bizlere INNER JOIN kullanacağın tabloların diyagramını paylaşırmısın. Yani şöyle, mevcut tablolarında olan ROWS' lar, ve bu tablolardan istediğin ROWS' lar.


    Mum olmak kolay değildir! Işık saçmak için önce YANMAK gerekir.

    28 Mayıs 2013 Salı 08:47
  • parantez içine sanırım 

    (select top 1 adr.* from AddressMapping am INNER JOIN Address adr ON adr.AddressID=am.AddressID
    WHERE am.RecordType=1 and  am.AdressType=0 AND  am.[Status]=0)

    şekliden birşey yazmalısınız

    customer - AddressMapping - Address isimli tabloları kullandığınızı varsaydım

    28 Mayıs 2013 Salı 13:38