PDA

View Full Version : سوال: وجود یک رکورد خاص در جدول



barnamenevisjma
سه شنبه 30 آذر 1389, 05:14 صبح
سلام و وقت بخیر
چطور میتونم وجود یک رکورد خاص(مثلا با استفاده از کلید اصلی) رو در یک جدول بررسی کنم. به شرطی که اطلاعات اضافی با جدول مبادله نکنم. آخه در برنامه به اطلاعات هیچ کدوم از ستون ها نیازی ندارم. فقط وجود رکورد رو لازم دارم.
اصلا ایا برای چنین شرایطی، دستور هست؟
:متفکر:

حمیدرضاصادقیان
سه شنبه 30 آذر 1389, 07:36 صبح
سلام.
شما میتونید به شکل زیر بنویسید.


if Exists(select id from table1 where id=10)
...

با این دستور شما بررسی میکنید که مثلا از جدول table1 رکوردی با شماره 10 هست یا نه.اگر بود ادامه دستورات شما رو انجام میده.

Reza_Yarahmadi
سه شنبه 30 آذر 1389, 07:39 صبح
دستورات زيادي ميشه واسه اين كار نوشت

IF EXISTS(Select * From TableName Where ID = @Id)
Select 1 as Result
else
Select 0 as Result

--OR

Select Count(*) as Result From TableName Where ID = @Id

--OR

Select Id From TableName Where ID = @Id

حمیدرضاصادقیان
سه شنبه 30 آذر 1389, 07:51 صبح
Select Count(*) as Result From TableName Where ID = @Id

البته بهتره از Count استفاده نشه. چون این دستور یک بار کل جدول رو Scan میکنه تا به رکورد مورد نظر برسه و از لحاظ Performance بازده خوبی نداره.

barnamenevisjma
سه شنبه 30 آذر 1389, 12:28 عصر
با سلام

if Exists(select id from table1 where id=10)
...کاملا درست می فرمایید. من هم به همین صورت کار کردم. ولی این Query روی شبکه اجرا خواهد شد و نمی خواهم اطلاعات اضافی و غیر ضروری(فیلدی که دستور select برمیگرداند) را سربار شبکه کنم. راهی برای این کار وجود دارد؟ یا اینکه باید به همین صورت عمل کنم.

Reza_Yarahmadi
سه شنبه 30 آذر 1389, 12:36 عصر
اين پردازش ها روي سرور انجام ميشه و اطلاعاتي روي شبكه فرستاده نميشه ، خروجي 0 يا 1 حداكثر 2 بايت فضا ميگيره (در صورتي كه به بيت تبديلش كنيد كه 1 بايت ميگيره) پس سرباري به شبكه وارد نميكنه.
در ضمن معمولا توي برنامه هاي تحت شبكه سربار شبكه چندان مد نظر نيست (بدليل امكانات سخت افزاري جديد) و سربار سرور مورد توجه قرار ميكيره.