ورود

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 صبح
دوستان کسی نمی تونه کمک کنه من خیلی نیاز دارم