PDA

View Full Version : یافتن رکورد خالی ...



Hamid_PaK
سه شنبه 31 مرداد 1385, 09:28 صبح
خیلی فکر و جستجو کردم ولی به نتیجه ی جالبی نرسیدم !!!

ببینید ما یک فیلد id در یک جدول داریم که باید با اعدادی پر بشه مثلا از 1000 شروع می شود ، حالا شما تا رکورد 1021 را وارد کردید ، بر می گردید و رکورد 1013 را حذف می کنید ...
سوال : ساده ترین راه برای اینکه متوجه شویم در فیلد id رکورد 1013 خالی می باشد چیست ؟؟؟

با تشکر ، یا حق ...

Amir Lajevardi
سه شنبه 31 مرداد 1385, 12:30 عصر
سلام
یعنی حتما لازمه که یک رکورد که مثلا با ID 1013حذف میشه، رکورد جدید بیاد نخستین ID حذف شده قبلی رو به خودش اختصاص بده؟؟
اگر اینطوره من چند تا راه به نظرم میرسه،
یکی اینکه id های حذف شده رو در یک جدول جدید وارد کنید و در هنگام اضافه شدن رکورد جدید این جدول رو کنترل کنید و id های حذف شده را به ترتیب از آن بدست بیارید و حذف کنید.
یک کار دیگه اینه که شما یه فیلد جدید به جدول اضافه کنید با نام Deleted از نوع Boolean و در حقیقت با اینکار رکوردها را حذف منطقی کنید. و در هنگام جستجو و یا اضافه کردن رکورد جدید، رکوردهای حذف شده را از طریق این فیلد شناسایی کنید.

البته من فکر نمیکنم اینکار جالب باشه، چه لزومی داره از id هایی که حذف میشن مجدد استفاده کنید؟؟

Hamid_PaK
سه شنبه 31 مرداد 1385, 14:42 عصر
به ساختار نمی تونم دست بزنم پس فیلد deleted منتفی ...
ولی ذخیره فکر بدی نیست اما شک دارم SQL راهی برای این موضوع نداشته باشه !!!

با تشکر ، یا حق ...

حمیدرضاصادقیان
چهارشنبه 01 شهریور 1385, 08:39 صبح
ببینید من یک راهی رو انجام دادم اینکه اومدم یک جدول temp ایجاد کردم و از شماره یک تا اخرین شماره ای که id من قرار داره در اون جدول insert کردم.بعد با استفاده از یک left outer join اومدم مقادیر خالی رو که null هست در جدول اصلی برگردوندم.

mzjahromi
چهارشنبه 01 شهریور 1385, 13:23 عصر
ببین این بدردت میخوره؟


SELECT MIN(Num) AS Expr1
FROM TableName A1
WHERE (NOT ((Num + 1) IN
(SELECT A2.Num
FROM TableName A2
WHERE A2.Num = A1.Num + 1)))