View Full Version : این error چیه
sasan123
پنج شنبه 02 آبان 1387, 09:47 صبح
دوستان این error را چرا می ده و چگونه رفع کنم
SELECT *,
(SELECT * FROM dbo.Function2() WHERE (kala = kala_sabet.kala) AND (DATEDIFF(day, tarekh1, GETDATE()) = 1)) AS ss FROM kala_sabet
و error ان
only one experssion can be specified in the select list when the subquery is not introduced with exists
nedata
پنج شنبه 02 آبان 1387, 14:32 عصر
سلام
من ساختار جدولتونو نمی دونم اما فکر می کنم مشکل در قسمت where و برای دستور kala=kala_sabet.kala باشد .
باید با دستور Exists بنویسید.
sasan123
پنج شنبه 02 آبان 1387, 14:56 عصر
دوست من من برای این کار را انجام می دهم که می خواهم بین این دو جدول ارتباط برقرار کنم از join نمی تونم استفاده کنم اخه می خواهم داده های جدول اول را حتما نشان دهد و در مورد دومین جدول با اون شرط نشان دهد من اگه از function2 استفاده نکنم و از جدول های پایگاهم استفاد ه کنم مشکلی ندارم ولی وقتی از function که در داخل ان هم یک دستور نوشته ام این خطا را می دهد می شه در مورد استفا ده exists توضیح دهید که چگونه استفاده کنم
دوستان در ضمن کوئری function این جوری
ALTER FUNCTION dbo.Function1
(
/*
@parameter1 int = 5,
@parameter2 datatype
*/
)
RETURNS TABLE
AS
RETURN SELECT geymat, tarekh1, nam,isnull(geymat- (SELECT geymat FROM kala_m WHERE (DATEDIFF(day, t2.tarekh1, tarekh1) = - 1) AND (nam = t2.nam) AND (DATEDIFF(day, tarekh1, t2.tarekh1) = 1)),0) AS ee1 FROM kala_m AS t2
Microsoft.net
پنج شنبه 02 آبان 1387, 20:06 عصر
SELECT *,
(SELECT top 1 * FROM dbo.Function2() WHERE (kala = kala_sabet.kala) AND (DATEDIFF(day, tarekh1, GETDATE()) = 1)) AS ss FROM kala_sabet
اینجوری بنویس مشکلت حله
sasan123
جمعه 03 آبان 1387, 07:41 صبح
دوست من با ان کار شما هم error را باز می دهد چی کار کنم کسی ایده ای به ذهنش نمی رسه
Microsoft.net
جمعه 03 آبان 1387, 14:45 عصر
توی اون function که داری در قسمت isnull(geymat- (SELECT geymat FROM kala_m بعد از select بنویس top 1 حله مشکلت
sasan123
جمعه 03 آبان 1387, 15:40 عصر
دوست من با تشکر که وقت می گذاری و من دوباره ان کار را انجام دادم ولی باز همان error تو را خدا یکی کمک کنه کوئری که در function درست کار می کنه و قبلا امتحانش کردم و ان کوئری جدیدی هم که نوشتم اگه یک جدول دیگه باشه درست کار می کنه یعنی به غیر از function ولی با هم نه
Microsoft.net
جمعه 03 آبان 1387, 16:24 عصر
به جای این function از یک View استفاده کن که راحت تر بشه Trace کردش ، همون چیزی که تو فانکشن نوشتی بزار تو View بعد با اون کویری اصلی Join بزن بعد نتیجشو بگو
Alireza Orumand
جمعه 03 آبان 1387, 18:28 عصر
سلام
دوست من من برای این کار را انجام می دهم که می خواهم بین این دو جدول ارتباط برقرار کنم از join نمی تونم استفاده کنم اخه می خواهم داده های جدول اول را حتما نشان دهد
اگه فقط برای دلیلی که در بالا ذکر کردید نمیتونید از join استفاده کنید بهره به جای inner join که به صورت default همون join هست از rhight outer join استفاده کنید. حالا جدول اول به طور کامل میاد و جدول دوم اگه با شرط join برابری داشته باشده اطلاعات میاره.
موفق باشید.
sasan123
شنبه 04 آبان 1387, 07:04 صبح
به جای این function از یک View استفاده کن که راحت تر بشه Trace کردش ، همون چیزی که تو فانکشن نوشتی بزار تو View بعد با اون کویری اصلی Join بزن بعد نتیجشو بگو
دوست من ممنون من منظور کارتون را نفهمیدم ولی همون کار را انجام دادم داده های join شده تمام داده هایی را که در function2 هستند را با جدول اول join می کند من در function2 تعدادی قیمت مربوط به تعدادی کالا دارم که هر کرام تفاوت با روز قبلش محاسبه شده حالا من می خواهم داده های جدول اول حتما که نام تهییه کندهی کالا ها می باشد را با داده های جدول دوم را نشان دهم با این شرط که داده های اخرین قیمتی باشد که در جدول درج شده است یعنی اخرین قیمت ان کالا را با جدول اول همزمان نشان دهم و نه با تمام قیمت ها واین کار برای کالا های دیگر هم انجام شود با اخرین قیمت شان البته داده های جدول اول حتما باید نشان داده شود فکر کنم مسئله ی من با join حل نمی شود یا outer join اگه می شه کدشو بزارین
sasan123
یک شنبه 05 آبان 1387, 10:31 صبح
دوستان کسی نمی تونه کمک کنه من خیلی نیاز دارم
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.