ورود

View Full Version : سوال: استفاده از select در where



dr_csharp
سه شنبه 16 مهر 1387, 18:44 عصر
سلام
اشکال این کد چیه که Error میده ؟ (از syntax خطا میگیره )


select * from (select * from Table )

رضا عربلو
سه شنبه 16 مهر 1387, 21:02 عصر
select * from (select * from Table ) AS TempTable

dr_csharp
سه شنبه 16 مهر 1387, 21:37 عصر
چرا example های موجود در سطح اینترنت معمولا به همون صورتیکه Syntax Error داره نوشته شده ؟

dr_csharp
چهارشنبه 17 مهر 1387, 13:25 عصر
الان مشکل این کد چیه ؟


Select * from Table1 where Id between (select * from Table2 ) as TempTable

ASKaffash
چهارشنبه 17 مهر 1387, 14:08 عصر
سلام
روش استفاده ازBetween اشتباه است چون :

Select * From T Where Fld Between X and Y

dr_csharp
چهارشنبه 17 مهر 1387, 15:40 عصر
کدامیک از کدهای زیر بهینه است ؟


UPDATE
CallRecorder
SET
pulse=@pbxCo
WHERE
RecId in (SELECT TOP 20 RecId FROM CallRecorder
WHERE channel=@pbxLine
AND
RecDate=@pbxDate
AND
BeginTime=@pbxTime
--ORDER BY
--RecId DESC
)

و یا :


UPDATE
CallRecorder
SET
pulse=@pbxCo
WHERE
RecId in (SELECT Top 20 RecId FROM CallRecorder)
AND channel=@pbxLine AND RecDate=@pbxDate AND BeginTime=@pbxTime

هدف :میخوام یکی از رکوردهای جدول که اخیرا insert شده و مطمئنم جزء 20رکورد آخر هست رو Update کنم

ASKaffash
چهارشنبه 17 مهر 1387, 15:47 عصر
باسلام
بنظرمن اگر به شکل ذیل بنویسید دومی باید بهتر باشد :


UPDATE
CallRecorder
SET
pulse=@pbxCo
WHERE
channel=@pbxLine AND RecDate=@pbxDate AND BeginTime=@pbxTime and
RecId in (SELECT Top 20 RecId FROM CallRecorder)

dr_csharp
چهارشنبه 17 مهر 1387, 16:03 عصر
باسلام
بنظرمن اگر به شکل ذیل بنویسید دومی باید بهتر باشد :


UPDATE
CallRecorder
SET
pulse=@pbxCo
WHERE
channel=@pbxLine AND RecDate=@pbxDate AND BeginTime=@pbxTime and
RecId in (SELECT Top 20 RecId FROM CallRecorder)

بنظرم کد دوم من از کد شما بهتره چون اگه اول RecId تو شرط چک بشه بهتره چون RecId حالت unique داره و بدین صورت کلی از رکوردها از دامنه ی بررسی حذف میشه !؟
ضمنا چرا بنظرتون دومی بهتره ؟

ASKaffash
چهارشنبه 17 مهر 1387, 16:10 عصر
سلام دوست من
اگر شما ایندکسی روی channel,RecDate,BeginTime داشته باشید و روی جدول جاری یک ایندکس دیگر روی RecId داشته باشید شرایط تکنولوژی RushMore فراهم میگردد.

dr_csharp
چهارشنبه 17 مهر 1387, 16:23 عصر
سلام دوست من
اگر شما ایندکسی روی channel,RecDate,BeginTime داشته باشید و روی جدول جاری یک ایندکس دیگر روی RecId داشته باشید شرایط تکنولوژی RushMore فراهم میگردد.
معذرت میخوام..اگه حوصلش و دارین بیشتر توضیح بدین . من تو SQL حرف خاصی برای گفتن ندارم :بامزه:

ASKaffash
چهارشنبه 17 مهر 1387, 16:32 عصر
معذرت میخوام..اگه حوصلش و دارین بیشتر توضیح بدین . من تو SQL حرف خاصی برای گفتن ندارم :بامزه:

سلام دوست من
صفحه 61 این جزوه شما را راهنمائی خواهد کرد:
http://barnamenevis.org/forum/showthread.php?t=106494