En iyi yanıtlayıcılar
MS SQL Join hk.

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
- 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
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
- Yanıt Olarak İşaretleyen Selçuk Arslantürk 30 Mayıs 2013 Perşembe 05:09
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
- Yanıt Olarak İşaretleyen Selçuk Arslantürk 24 Mayıs 2013 Cuma 17:49
- Yanıt İşaretini Geri Alan Selçuk Arslantürk 24 Mayıs 2013 Cuma 17:50
- Yanıt Olarak İşaretleyen Selçuk Arslantürk 24 Mayıs 2013 Cuma 18:09
- Yanıt İşaretini Geri Alan Selçuk Arslantürk 25 Mayıs 2013 Cumartesi 10:28
-
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
- Düzenleyen Selçuk Arslantürk 25 Mayıs 2013 Cumartesi 10:29
-
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.
-
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
- Yanıt Olarak İşaretleyen Selçuk Arslantürk 30 Mayıs 2013 Perşembe 05:09