سلام
یک بانک اطلاعاتی داریم که در این بانک اطلاعات دانشجو ثبت می شود . حالا طوری شده که اطلاعات چند دانشجو تکراری وارد شده یعنی برای یک دانشجو که شماره دانشجویی را وارد می کنیم در لیست 2 تا مشخصات می آورد که عین هم هستند . یعنی کلید اصلی نداریم و بانک اطلاعات تکراری هم قبول می کنه . حالا ما میخواهیم که اگه اطلاعات یک دانشجو 2 بار ثبت شده اطلاعات تکراری را حذف کنیم یعنی فقط در بانک یک بار اطلاعات داشته باشد . با استفادخ از دستورات SQL
یعنی حذف اطلاعات تکراری از بانک.
مثلا 2 رکورد اینطوری ثبت شدند :
نام : شاهرخ
فامیل : امجی
شماره دانشجو : 5697844
حالا جون 2 تا رکورد ایجوری هستند باید یکی از اینها حذف بشه.
لطفا کمک کنید خیلی لازم دارم
با تشکر
خوب چرا اول چک نمیکنی که این نام وجود داره یا نه...و به کاربر پیغام بدی
خیلی راحت میتونی اینکارو بکنی .... اسم یا شماره دانشجویی که کاربر وارد کرده رو با دستور سلکت انتخاب میکنی تو دیتا بیس بعد چک میکنی ببینی فیلد (نام ) محتواش خالی هست یا نه...اگه خالی نباشه یعنی وجود داره اگه خالی بود ثبت میکنی ولی اگه خالی نبود ارور میدی که همچین شماره ای وجود داره...یه چیزه دیگه بزن....ولی بهر حال اگه میخوای دلت کنی دستورش اینه
کد:
l -> delete fieldname from table1 where username="ali" <-l
من هم با مهدی موافقم ! البته خیلی بهتره که جدولت کلید اصلی هم داشته باشه تا کاملا بتونی بشکل نرمال درش بیاری ! اینطوری کارایی دیتابیست هم بالا میره .
سلام
من دنبال چیزی میگشتم که سر از اینجا در آوردم که البته چون سایت جالب و مفیدی است عضو هم شدم. البته دوستان گرامی جواب شما را دادهاند شاید این صفحه را هم مطالعه بکنی بد نباشد:
http://support.microsoft.com/default.asp...us;q139444
امیدوارم بتوانم مرتب به شما عزیزان سری بزنم
موفق باشید
برزو
نقل قول: mehdivirus نوشته بود :
delete fieldname from table1 where username="ali
ببینید این دستور اونهای که اسمشون مسائی هم هست رو حذف میکنه اصلا منظور من این نیست .
ببینید منظورم اینه که به طور مت مثلا اطلاعات پنج دانشجو را وارد کردیم و بعدا به طور اشتباهی دوباره اطلاعات همان پنج دانشجو را وارد کردیم حالا فهمیدیم که این پنج تا اطلاعاتشون دو بار وارد شده و و حالا می خواهیم که تکرایها را حذف کنیم یعنی برای هر کدام فقط یکی از اطلاعاتشون باقی بمونه.
چون اگر از دستور بالا استفاده کنیم هر دو رکورد حذف میشوند یعنی دیگه دانشجو کلا از بانک حذف می شود !!
مثلا من وارد کردم
نام : شاهرخ
فامیل : امجی
شماره دانشجو : 5697844
بعد از پنج دقیقه اشتباها این مشخصات را دوباره ثبت کردم توی بانک . حالا چطوری این تکراریرو حذف کنم ؟
براي پيدا كردن ركوردهايي كه تكراري هستن ميتوني از اين دستور استفاده كني :
کد:
[align=left]select * from tbl_name where dup_field in ( select dup_field from tbl_name group by dup_field having count(*)>1)[/align]
كه توش tbl_name اسم جدولته و dup_field نام فيلدي هست كه تكراري هست. اگر تعداد فيلدهاي تكرار بيش از يكي باشه ديگه خودت زحمتش رو بايد بكشي.
اگر خواستي ديليت كني كافيه بجاي سلكت اولي از دستور دليت استفاده كني.
ولي اگه بخوايي يكي رو نيگر داري و بقيشون رو ديليت كني بايد برنامه بنويسي
با دستور Distinct هم میتونی رکورد هایی که تکراری هستن رو برنداری
select distinict name * into
table name
from
Production.Product
---------------------------------------------