View alan bağlantı sorunu???

MS SQL Server veritabanı ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
gokcemt
Üye
Mesajlar: 34
Kayıt: 01 Eki 2003 04:10
Konum: eskişehir

View alan bağlantı sorunu???

Mesaj gönderen gokcemt »

Selamlar...

Arkadaşlar iki adet table kullanarak bi view oluşturuyorum.Alanlar şu
şekilde;

Table 1
ISEMRI
STOKKOD
NETMT


Table2
ISEMRI
FIRMAAD


İki tabloyu işemri alanından birbirine bağladım (left-right-full outer join
hepsini denedim) ama Table1 de ISEMRI alanlarından bazıları NULL olduğu için
null olan kayıtları kesiyor. Ben kesmesini istemiyorum. Table1 deki bütün
kayıtlar gelsin null alanlarda gelsin istiyorum. Bi kaç farklı yöntem
denedim ama olmadı. Acaba bunun bi yolu varmı??
west
Kullanıcı avatarı
pro_imaj
Kıdemli Üye
Mesajlar: 1364
Kayıt: 18 Oca 2005 05:45
Konum: Dünyadan

Re: View alan bağlantı sorunu???

Mesaj gönderen pro_imaj »

gokcemt yazdı:Selamlar...
İki tabloyu işemri alanından birbirine bağladım (left-right-full outer join
hepsini denedim)
Merhaba;

Yukarıda kendi sorunuza kendiniz cevap vermişsiniz . Birleştirmeyi nasıl yaptınız bilmiyorum!!! ama;

Yapmanız gerek basit aslında iki alanda key olan alanı birden çoka birleştirme yapmanız gerekiyor hani vtdeki tüm kayıtları göstermek istiyorsanız diğer vtyi çoklu birleştirin olsun bitsin.

Nasıl bir kod kullanıdığınız yazarsanız çözeriz.

Saygılarımla
Kolay gelsin.
Gün gelecek, dilleri, elleri ve ayakları yapmış oldukları bütün kötülükleri tek tek bildirerek aleyhlerinde şahitlik edecektir. [Nur Suresi 24]
_________________
gokcemt
Üye
Mesajlar: 34
Kayıt: 01 Eki 2003 04:10
Konum: eskişehir

Mesaj gönderen gokcemt »

Kod: Tümünü seç

SELECT     T1.TARIH, T1.STOKKOD, T1.ISEMRI, T1.SIPSIRANO, 
                      T1.SIPARIS, T1.TOPNO, T1.NETMT, T2.FASONFIRMA
FROM         T10 LEFT OUTER JOIN
                      T2 ON T1.ISEMRI = T2.ISEMRI
İki tablo ISEMRI alanından bağlı T2den FASONFIRMA alanını alıyorum.
T1 e tek başına select çektiğimde 100 kayıt geliyor.
İşemrinden T2ye bağladığımda 70 kayıt geliyor.
T1 de 30 adet ISEMRI NULL alan var.
ama ben bu null alanlarda gelsin istiyorum.
ISEMRInden bağlı olduğu için T1 de ISEMRI null olunca almıyor o satırı.
30 kayıtı kesiyor 70 gösteriyor.
100 kayıt gelmeli null alanlar dahil ama nasıl?
west
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Left join yaparken NULL'ları da dahil etmelisiniz:

Kod: Tümünü seç

LEFT OUTER JOIN 
                      T2 ON (T1.ISEMRI = T2.ISEMRI) OR (T1.ISEMRI IS NULL AND T2.ISEMRI IS NULL)
NULL = NULL doğru değildir (TRUE sonuç vermez).

İyi çalışmalar.
gokcemt
Üye
Mesajlar: 34
Kayıt: 01 Eki 2003 04:10
Konum: eskişehir

Mesaj gönderen gokcemt »

Kod: Tümünü seç

SELECT     T1.TARIH, T1.STOKKOD, T1.ISEMRI, T1.SIPSIRANO, 
                T1.SIPARIS, T1.TOPNO, T1.NETMT, 
                T2.FASONFIRMA
FROM         T1 LEFT OUTER JOIN
                      T2 ON (T1.ISEMRI = T2.ISEMRI) 
                      OR (T1.ISEMRI IS NULL AND T2.ISEMRI IS NULL)

cevap için öncelikle çok teşekkür ederim.
dediğiniz şekilde uyguladım fakat halen T1 de
ISEMRI alanı null olan 30 kayıtı vermiyor.
70 kayıt gösteriyor.


T2 yi ISEMRI alanında T1 e bağlayıp
T2.FASONFIRMA alanını alıyorum.
T1de işemri olmayan satırları göstermiyor.
Aslında gösterip ISEMRI = NULL ve FASONFIRMA= NULL olarak 30 kayıtıda göstermesi gerekiyor.[/code]
west
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Her iki tablonun ve view'ın yapısını yani kodlarını tam olarak belirtebilir misiniz?

Örneğin CREATE TABLE TABLO1 (KODU INTEGER NOT NULL... gibi.
gokcemt
Üye
Mesajlar: 34
Kayıt: 01 Eki 2003 04:10
Konum: eskişehir

Mesaj gönderen gokcemt »

-------T1--------- ------------------T2----------
ISEMRI------------------------- ISEMRI
TARIH------------------------- FASONFIRMA
STOKKOD
SIPSIRANO
SIPARIS
TOPNO
NETMT

İki tabloyu işemri alanından bağlıyorum. T1 recordcountu=100 işemri alanından T2 ye bağladığımda recordcount=70 oluyor. Bunun sebebi T1 tablosunda 30 adet kayıt ISEMRI boş olması. ama ben o boş olan satırlarıda getirmesini istiyorum.sonuç şu şekilde

ISEMRI------TARIH------STOKKOD.......FASONFIRMA
123-----------2005-------AAA1-------------FIRMA1
456-----------2005-------BBB1-------------FIRMA2
NULL----------2005------CCC1-------------NULL

sonuçların dönmesi gerekirken işemri NULL olan alanı hiç almıyor.
west
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Bu tür, bir tabloda olup diğerinde olmayan verileri de getirme sorgularında LEFT JOIN veya RIGHT JOIN kullanmanız lazım. Bunun için bir makale hazırlamıştım ben zamanında:

viewtopic.php?t=9193&highlight=left+join
Cevapla