ورود

View Full Version : مشکل در گرفتن یک کوئری



Shila7
دوشنبه 20 فروردین 1386, 14:29 عصر
با سلام خدمت اساتید;
من در SQL-Server 2000 میخواستم با یک کوئری تو فیلد خاصی از یک جدول ، فیلدی از جدول دیگه رو که مثلا" مقدار شماره فاکتور در هر دو جدول یکی هست رو وارد کنم. مثل این:

فرض کنید فیلدهای : forooshdate,factornum,jens مربوط به جدول فروش و فیلدهای: solddate,factornum,jens مربوط به جدول اجناس باشند.
من میخوام که وقتی forooshdate در جدول فروش درج میشه، بتوانم با استفاده از SQL بتونم چک کنم ببینم اگه مقادیر factornum,jens هر دو جدول با هم برابر بودند، forooshdate را در solddate درج کنم. ممنون ار وقتی که گذاشتید.

ghabil
دوشنبه 20 فروردین 1386, 20:30 عصر
کاری که میخوای بکنی یک طرف من ساختار دیتابیست رو متوجه نمیشم ؟! جنست هم شماره فاکتور داره ؟! بعد این شماره با شماره ای که فروخته میشه یکیه ؟!! چیزی که بنظر من منطقیه اینه که فقط جنس که در هردوتا جدول هست باید برابر باشند .
از این گذشته کاری که میخوای بکنی از نظر نرمال بودن دیتابیست هم غلطه و Redundancy درست میکنه، راه درست اینه که تاریخ فروش فقط در همون جدول فروش باشه هر موقع که لازم داشتی تاریخ فروش جنس رو بدونی جدول فروش و اجناس رو Join کنی تا تاریخ فروش هر جنس معلوم بشه .
اما اگر قصدت یادگرفتن نیست و فقط میخوای یک پروژه رو تموم کنی بگو تا تریگرش رو برات بنویسم ;)

Shila7
سه شنبه 21 فروردین 1386, 10:34 صبح
ممنونم از لطفتون. راستش مثالی که آورده بودم ، فقط یه مثال بود. از راهنماییتون هم خیلی ممنونم. اگر تریگر رو هم لطف کنید برای تازه کاری مثل من بسیار مفید خواهد بود.

ghabil
سه شنبه 21 فروردین 1386, 11:29 صبح
create trigger....
for insert as
declare Cursor MyCursor local for
Select Jens_ID, Fact_Date from Inserted
Open MyCursor
Fetch next From myCurosr into @Jens,@FactDate
while @@Fetch_Status <> -1
Begin
if @@Ftech_Status <> -2
update JensTable set JensSoldDate = @FactDAte where JensID=@Jens
FetchNext from myCursor into @jens,@FactDate
End
Close MyCurosr
Deallocate MyCurosr

جایش رو متوجه نشدی بگو

یادم رفت بگم اینو باید بزاری روی جدول فاکتورهات مثلا (کلا سعی کردم شبیه مثال خودت باشه)