SQL view oluşturma 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

SQL view oluşturma sorunu

Mesaj gönderen gokcemt »

Arkadaşlar içinden çıkamadığım bi sorunum var.

İki adet tablom var ve bu iki tabloyu kullanrak bir view oluşturmam gerekiyor.

TABLE1

STOKKOD
ADI
TARIH
...

TABLE2

STOKKOD
RENK
DESEN
...

Bu iki tabloyu stok kodundan birbirine bağlayıp Table2 den Renk alacam.
Fakat Table1 de olan stokkod Table2de hiç yok.Öyle olunca kayıt getirmiyor.BEn Table2de kayıt olmasada Table1den STOKKOD,ADI getirmesini istiyorum.LEft Right Full outer join denedim ama Table2de hiç kayıt olmadığı için hala görmüyor.

TEşekkürler
west
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Normalde

Kod: Tümünü seç

SELECT * FROM TABLE1 LEFT JOIN
                        TABLE2 ON TABLE1.STOKKOD = TABLE2.STOKKOD
şeklinde çalışması lazım. Eğer yazdığım sql kodunu verirsen daha fazla yardımcı olabiliriz belki.
gokcemt
Üye
Mesajlar: 34
Kayıt: 01 Eki 2003 04:10
Konum: eskişehir

Mesaj gönderen gokcemt »

Kod: Tümünü seç

SELECT     dbo.UISEMRI0.ISEMRI, dbo.UISEMRI0.STOKKOD, dbo.USTOKOZELLIK0.DEGER AS ATKI1
FROM         dbo.UISEMRI0 LEFT OUTER JOIN
                      dbo.USTOKOZELLIK0 ON dbo.UISEMRI0.SIRKOD = dbo.USTOKOZELLIK0.SIRKOD AND 
                      dbo.UISEMRI0.STOKKOD = dbo.USTOKOZELLIK0.STOKKOD
WHERE     (dbo.UISEMRI0.ISEMRI = 123927) AND (dbo.USTOKOZELLIK0.KOD = 'ATKI 3')

yazdığım kod bu normalde evet left outer join ile çalışması lazım ama yok USTOKOZELLIK table inde bağlantı olan STOKKODU kaydı olmadığı için UISEMRI0 daki değerleride getirmiyor.
west
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

WHERE kullanımın hatalı.

İkinci tablo için kullandığın şartı ya NULL ile garanti altına alacaksın veya o şartı JOIN bölümüne taşıyacaksın.

Kod: Tümünü seç

SELECT     dbo.UISEMRI0.ISEMRI, dbo.UISEMRI0.STOKKOD, dbo.USTOKOZELLIK0.DEGER AS ATKI1
FROM         dbo.UISEMRI0 LEFT OUTER JOIN
                      dbo.USTOKOZELLIK0 ON dbo.UISEMRI0.SIRKOD = dbo.USTOKOZELLIK0.SIRKOD AND
                      dbo.UISEMRI0.STOKKOD = dbo.USTOKOZELLIK0.STOKKOD AND dbo.USTOKOZELLIK0.KOD = 'ATKI 3'
WHERE     dbo.UISEMRI0.ISEMRI = 123927

veya

SELECT     dbo.UISEMRI0.ISEMRI, dbo.UISEMRI0.STOKKOD, dbo.USTOKOZELLIK0.DEGER AS ATKI1
FROM         dbo.UISEMRI0 LEFT OUTER JOIN
                      dbo.USTOKOZELLIK0 ON dbo.UISEMRI0.SIRKOD = dbo.USTOKOZELLIK0.SIRKOD AND
                      dbo.UISEMRI0.STOKKOD = dbo.USTOKOZELLIK0.STOKKOD
WHERE     dbo.UISEMRI0.ISEMRI = 123927 AND (dbo.USTOKOZELLIK0.KOD IS NULL OR dbo.USTOKOZELLIK0.KOD = 'ATKI 3')
İyi çalışmalar.
gokcemt
Üye
Mesajlar: 34
Kayıt: 01 Eki 2003 04:10
Konum: eskişehir

Mesaj gönderen gokcemt »

Yok ben join tanımlarının tümünü denedim

iki tablo STOKKOD dan birbirine bağlı. Birinci tabloda olan bazı stokkodları ikinci tabloda yok. stokkodundan bağladığım için 1.tablo değerleride gelmiyor.Örnek
TABLE1

STOKKOD=C01
ADI=JAKAR
TARIH=01.01.2006
...

TABLE2

STOKKOD= ("C01" stokkodu yok)
RENK...
DESEN....

iki tablo stokkodundan bağlı ben bu sorgu sonucu

STOKKOD=C01
ADI=JAKAR
RENK=null
DESEN=null

olarak gelmesini istiyorum ama hepsi boş geliyor
west
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Mesaj gönderen Hakan Can »

Öncelikle her halukarda LEFT JOIN yapacaksın.

Sonra benim gönderdiğim 2 örneği dene.

Hala hiçbir kayıt gelmiyorsa sorun şu ki:
dbo.UISEMRI0.ISEMRI = 123927 şartını sağlayan hiçbir kayıt yok.

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

Mesaj gönderen gokcemt »

Hepinize çok teşekkürler Hakan arkadaşımın verdiği birinci örnek ile oldu

Allah razı olsun hepinizden.
west
Cevapla