ايران ويج

نسخه‌ی کامل: نحوه ی کاربرد فیلد(مجازی) در اس کیو ال
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام

اگر دستوری مشابه زیر داشته باشیم و بخوایم فیلدی که به صورت مجازی در حین اجرای کوئری ایجاد می کنیم رو باز هم در دستور اس کیو ال استفاده کنیم و در بخش شرط بیاریم چطوری باید دستور اس کیو ال رو بنویسیم.

کد:
select A.id,A.name,A.t-count(*) as dift from (select * from E left join A on A.id=E.id) where dift>0group by A.id,A.name,A.t")

منظورم قسمت Dift>0 هست.
dift یه مقدار مجازیه شما نمیتونی مگه اینکه به همون صورت که محاصبش میکنی همونجور در قسمت where بنویسی
یعنی
کد:
A.T-Count(*)>0
پیام خطا میده ! میگه : شما نمیتونید از توابع در شرط استفاده کنید.

Cannot have aggregate function in where clause A.T-Count(*)>0
با subquery مشکل حل شد.
0153 روز درگیر بودم .

کد:
Select * from (SELECT A.id, A.name, A.t - COUNT(E.id) AS difT FROM E RIGHT OUTER JOIN A ON E.id = A.id GROUP BY A.id, A.name, A.t) as sbquery Where difT > 0