SQL Server 2005 veya 2008 ile Computed Field

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
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Re: SQL Server 2005 veya 2008 ile Computed Field

Mesaj gönderen Hakan Can »

MS SQL Server belirttiğin gibi direk tablo yapısında başka bir tablodan bilgi almaya müsade etmiyor.

Çözüm olarak istediğin tablo yapısında VIEW oluşturabilirsin (iki tabloyu birleştirip). Sonuçta VIEW da olsa tablo gibi veri girişi yapabiliyorsun. Dikkat etmen gereken VIEW' da ana tablonun yapısını muhafaza etmeye çalışmak.

Şuna benzer bir örnek işini görebilir:

Kod: Tümünü seç

NET_MIKTAR => URUN_KODU, YIL, OCAK, SUBAT, MART, NISAN, MAYIS, HAZIRAN, TEMMUZ, AGUSTOS, EYLUL, EKIM, KASIM, ARALIK
NET_TUTAR  => URUN_KODU, YIL, OCAK, SUBAT, MART, NISAN, MAYIS, HAZIRAN, TEMMUZ, AGUSTOS, EYLUL, EKIM, KASIM, ARALIK

CREATE VIEW NET_MIKTAR_TUTAR
 (
  URUN_KODU, YIL, OCAK, SUBAT, MART, NISAN, MAYIS, HAZIRAN, TEMMUZ, AGUSTOS, EYLUL, EKIM, KASIM, ARALIK,
  TOPLAM_TUTAR
 )
AS
  SELECT
    T1.URUN_KODU, T1.YIL, T1.OCAK, T1.SUBAT, T1.MART, T1.NISAN, T1.MAYIS, T1.HAZIRAN, T1.TEMMUZ, T1.AGUSTOS, T1.EYLUL, T1.EKIM, T1.KASIM, T1.ARALIK,
    COALESCE(T2.OCAK + T2.SUBAT + T2.MART + T2.NISAN + T2.MAYIS + T2.HAZIRAN + T2.TEMMUZ + T2.AGUSTOS + T2.EYLUL + T2.EKIM + T2.KASIM + T2.ARALIK, 0) AS TOPLAM_TUTAR
  FROM NET_MIKTAR T1
    LEFT JOIN NET_TUTAR T2 ON T2.URUN_KODU = T1.URUN_KODU AND T2.YIL = T1.YIL
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Re: SQL Server 2005 veya 2008 ile Computed Field

Mesaj gönderen conari »

Bu işlemler için trigger kullanılır.
İlgili tablo stokların hareket tablosunu tetikleyen trigger ile (nedemekse trigger zaten tetikleyici :D ) update ettirilir.

Yani stok hareket tablonda bir hareket kaydı olduğunda veya değiştiğinde bu tablodaki bu alanı update edecek bir trigger yazacaksınız. :wink:
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Cevapla