View Full Version : ایجاد یک View از سه جدول
hlikehamed
چهارشنبه 18 خرداد 1390, 10:12 صبح
سلام
سه جدول داریم. به نام های t1 و t2 و t3 .
جدول یک و دو به وسیله کلید به هم متصل هستند و با استفاده از Innerjoin ستونهای مورد نیاز بدست میاد.
اما جدول سوم کلید خارجی نداره. می خوام یک ستون از جدول سوم رو به این View طوری اضافه کنم که حاصل ضرب یک ستون از جدول 1 در یک ستون از جدول 2 ما بین (between) دو مقدار دیگه از جدول سه باشه :متعجب:
یعنی به طور خلاصه
t1.c1*t2.c1=r
select t3.c1 where r between t3.c2 and t3.c3
البته نمیدونم همچین چیزی امکان پذیر هست یا نه :لبخندساده:
------
t1.c1 : ستون اول از جدول 1
t2.c1 : ستون اول از جدول دوم
r : حاصلضرب
یوسف زالی
چهارشنبه 18 خرداد 1390, 10:51 صبح
سلام.بله.
Join رو بنویسید و جای شرط در On شرط خودتون رو بگذارید. این شرط می تونه محاسباتی هم باشه.
hlikehamed
چهارشنبه 18 خرداد 1390, 11:05 صبح
میشه یک نمونه بنویسید توی قسمت شرط ها و On یکم مشکل دارم.
SELECT dbo.tbl1.cID, dbo.tbl1.FName, dbo.tbl1.LName, dbo.tbl1.c1, dbo.tbl2.Age, dbo.tbl2.c2, dbo.tbl2.Date,
dbo.tbl3.Total, dbo.tbl3.MinPay, dbo.tbl3.MaxPay
FROM dbo.tbl1 INNER JOIN
dbo.tbl2 ON dbo.tbl1.cID = dbo.tbl2.cID CROSS JOIN
dbo.tbl3
WHERE ((dbo.tbl1.c1*dbo.tbl2.c2) BETWEEN [dbo.tbl3.MinPay] AND [dbo.tbl3.MaxPay])
من یه همچین چیزی نوشتم اما خطا میده. میشه همین رو ویرایش کنید.
ممنون
یوسف زالی
چهارشنبه 18 خرداد 1390, 11:15 صبح
لطفا بگو چه خطایی میده
hlikehamed
چهارشنبه 18 خرداد 1390, 11:24 صبح
invalid column name dbo.tbl3.MinPay
invalid column name dbo.tbl3.MaxPay
یوسف زالی
چهارشنبه 18 خرداد 1390, 11:29 صبح
این ارور ربطی به join نداره.
میگه فیلدی به این اسم تو جدول سوم شما نیست
hlikehamed
چهارشنبه 18 خرداد 1390, 11:36 صبح
امکان نداره .چون این فیلدها وجود دارند. یعنی از لحاظ دستوری مشکلی ندارند؟
من فکر می کنم باید به صورت دیگه ای نوشته بشه این کار که بنده بلد نیستم.
چون یکی از فیلدها رو که عوض میکنم و فیلد دیگه ای میذارم باز هم همین خطا با فیلد جدید رو میده.
:لبخندساده:
یوسف زالی
چهارشنبه 18 خرداد 1390, 11:41 صبح
شما عکس جداول رو با چند تا داده بذار برام تا ببینم چشه
hlikehamed
چهارشنبه 18 خرداد 1390, 12:06 عصر
70885
70886
این هم کل view قبل از اعمال شرط و بعد از اعمال شرط
mehdi_black_hat
چهارشنبه 18 خرداد 1390, 14:14 عصر
اگه Case sensitivity رو فعال کردی MinPay و MaxPay رو با m کوچیک بزن شاید مشکلت این باشه ... یعنی minPay و maxPay ....
hlikehamed
چهارشنبه 18 خرداد 1390, 14:58 عصر
این کار رو هم کردم اما جواب نداده.
من فکر می کنم مشکل از جای دیگه باشه یعنی ساختار دستور
محمد سلیم آبادی
پنج شنبه 19 خرداد 1390, 05:06 صبح
چرا دو ستون MaxPay و MinPay داخل [] هست؟
بطور معمولی بنویسین و دوباره امتحان کنید.
hlikehamed
پنج شنبه 19 خرداد 1390, 08:24 صبح
چرا دو ستون MaxPay و MinPay داخل [] هست؟
بطور معمولی بنویسین و دوباره امتحان کنید.
ممنون جواب داد.
با تشکر از کمک همگی دوستان
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.