الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يمكن حذف سجلات متكررة و إبقاء أحدها فقط .. السجلات تحقق شرط معين ..

مغلق
بدأه imadouzoun في 26 أغسطس 2006 · 15 رد · 2,350 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته :

إخواني أحببت أن أطرح تساؤلاً لتنشيط الأدمغة و العقول و لنتخلص قليلاً من الروتين و الأسئلة المتكررة .... :lol:

إيه رأيكم ؟؟

لنبدأ بهذا السؤال !

كيف يمكن أن نحذف جميع السجلات المتكررة التي تحمل شرط ما من جدول ما .. وإبقاء أحدها فقط ..

علماً أن الجدول لا يملك مفتاحاً أساسياً .. :)

شاركونا بآرئكم يا شباب :D

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#2
imadouzoun كتب:

كيف يمكن أن نحذف جميع السجلات المتكررة التي تحمل شرط ما من جدول ما .. وإبقاء أحدها فقط ..

علماً أن الجدول لا يملك مفتاحاً أساسياً .. :)

أنا ما عندي مشكلة أبدا

بس عطيني نوع الشرط

أو عطيني جدول يحتوى على بيانات

سلام

#3

السلام عليكم و رحمة الله وبركاته :

أهلين أخي Design و مبروك الترقية .. :)

بالنسبة للجدول ليكن على النحو التالي :

Use Tempdb
Go
Create Table Student_TB(name Nvarchar(50))

Go

Insert Student_TB Values('محمد')
Insert Student_TB Values('سمير')
Insert Student_TB Values('سمير')
Insert Student_TB Values('سمير')
Insert Student_TB Values('سمير')
Insert Student_TB Values('خالد')

Go

المطلوب حذف تكرارات الإسم سمير .. ;) بحيث يبقى اسم سمير في سجل واحد ..

بدنا نشوف بالأخير الطريقة الأفضل .. شو رأيك أخ Design ... :)

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#4

ما بعرف أي ترقية عم تحكي عنها !!!

شو رأيك بهذا الكود

سلام


Go
Create Table Student_TB(name Nvarchar(50))

Go

Insert Student_TB Values('محمد')
Insert Student_TB Values('سمير')
Insert Student_TB Values('سمير')
Insert Student_TB Values('سمير')
Insert Student_TB Values('سمير')
Insert Student_TB Values('خالد')

Go

Create procedure RemoveValue
@Value NVarChar ( 50 )
AS Begin Select * From Student_TB where [name] = @Value
IF @@RowCount = 0
Begin raisError ( '%s was not found' , 16 , 1 , @Value )
Return 0
End

-- I don't why we have to do a select statment again !!!
Select * From Student_TB where [name] = @Value
IF @@RowCount = 1
Begin raisError ( 'There is one record with value %s' , 16 , 1 , @Value )
Return 0
End

-- Delete data
Delete From Student_TB Where [name] = @Value
-- Insert data
Insert Into Student_TB Values ( @Value )

raisError ( 'The process done Sucsessfuly ....' , 16 , 1 )
return 0
End
Go

-- Use the Procedure

Exec RemoveValue 'Desigen'
Go

Exec RemoveValue 'سمير'
Go

-- Be sure
Select * From Student_TB Exec RemoveValue 'سمير'
Go

-- This Code Created by Desien
-- Have Fun
Use Tempdb

#5

السلام عليكم و رحمة الله وبركاته :

أولاً : أخ Design إنت صرت ( عضو مميز ) هذه هي الترقية التي تحدثت عنها .. :lol:

أما فيما يخص الكود فهي طريقة لا بأس بها ... :P

لا تقليلاً من شأن الكود الجميل اللي كتبته أنت ... لكن الطريقة اللتي أقصدها أجمل نوعاً ما .. :)

شكراً على مشاركتك .. وأتمنى أن تجد الطريقة الأفضل .. وتطرحها لنا ..

أخوك عماد ..

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#6

ما رأيك بهذا الكود

declare @name varchar(50)
declare c cursor for 
select name from Student_TB group by name having count(name) > 1
open c
fetch next from c into @name while @@fetch_status = 0
begin delete from Student_TB where name = @name and ID <> 
    (Select top 1 ID from Student_TB where name = @name)    

    fetch next from c into @name end
close c
deallocate c

When all else fails, read the instructions.

If there is a possibility of several things going wrong the one that will cause the most damage will be the one to go wrong.

No Matter how many times you repeat, there will be someone not listening .

To beat the bureaucracy, make your problem their problem

55926083.png

#7

بتوقعك بتقصد

جلب عدد السجلات

بعدين نفتح cursor بعدد السجلات - 1

و تحذف السجلات من تعليمة select يلي بتنئ الـ cursor

سلام

IUnknown الأفكار كثييييييييير متقاربة

#8

جرب السكريبت المرفق

انا باجيب السجلات المكررة واحذفها ماعدا اول واحد

When all else fails, read the instructions.

If there is a possibility of several things going wrong the one that will cause the most damage will be the one to go wrong.

No Matter how many times you repeat, there will be someone not listening .

To beat the bureaucracy, make your problem their problem

55926083.png

#9

عزيزي IUnknown يمكنك ان تستخدم ما يلي أيضا :

select  distinct * into t1 from test
delete from test 
insert into test select * from t1

عوضا عن ان تستخدم المؤشرات

اللهم صل و سلم على سيدنا محمد

كاف و نون خلقهم و فنائهم كاف و نون

عالمي شاشة و لغتي صفر و واحد

Just Smile ............You can do it

When you stop learning ... You stop leading

لساني بنطقي صامت عنه عادل............وقلبي بصمتي ضاحك منه هازل

وأتـعـب من نـاداك من لا تـجيبـه............وأغـيظ من عـاداك من لا تـشاكـل

مدونتي الشخصية : Tammam Koujan

آخر مواضيع المدونة :

#10

طريقة جيدة ولكنها لن تنفع اذا كان هناك relation ;)

When all else fails, read the instructions.

If there is a possibility of several things going wrong the one that will cause the most damage will be the one to go wrong.

No Matter how many times you repeat, there will be someone not listening .

To beat the bureaucracy, make your problem their problem

55926083.png

#11

السلام عليكم ورحمة الله وبركاته

declare @sWhere varchar(50)
set @sWhere='سمير'
declare @cnt int 
set @cnt =(select count([name]) from Student_TB where [name]=@sWhere)-1
if @cnt<=0 return -- if name not exists or only one name found
set rowcount @cnt
delete  from  Student_TB where [name]=@sWhere

تم تعديل هذه المشاركة بواسطة Mo7eb_Alrasool في 27 أغسطس 2006 في 14:18

سبحانك اللهم وبحمدك أشهد ان لا اله الا أنت

أستغفرك وأتوب اليك

الهم صلي وسلم وبارك على سيدنا وحبيبنا محمد

#12

السلام عليكم ورحمة الله وبركاته :

في الحقيقة أنا سعيد لأن هكذا طريقة من المشاركات ... جعلت المنتدى أنشط بكثير ...

شكراً لكل من حاول معنا :) ...

ملاحظة : كل الطرق تؤدي إلى المطلوب لا شك في ذلك .. لكن الطريقة الموصى بها من مايكروسوفت هي طريقة الأخ .... محب الرسول ....

أحسنت أخي الكريم .. ;)

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#13

برافووووو و الله

يعني rowCount إذا احتوى على قيمة معينة و عملنا حذف يتم حذف السجلات

بقيمتها

شيئ عظيم تماما

#14

هذه هي الطريقة التي قصدتها يا أخ Design ;)

دروس و كتب مفيدة----------------------كتيب الإجرائيات المخزنةتعرف على اللغة Transact SQL <<-->> كتيب عن تنصيب قواعد البيانات Sql Server باللغة العربية كتيب عن إنشاء قواعد البيانات في SQL Server باللغة العربية <<-->> درس مع الأمثلة عن المؤشرات و التعامل معها في الـ T-SQLالعبارات الشرطية و الحلقات في T-SQL <<-->> شرح لبعض الـ Extended Stored Procedure استخدام مكتبات الـ Dot Net الخاصة بك في الـ Sql Server 2005 <<-->> التعامل مع المصفوفات من خلال الـ T-SQLتعابير الجداول الشائعة في SQL Server 2005 <<-->>الاتصال بالأداة SQL Server Management Studioحلول سريعة و لمحات برمجية --------------------------------التصدير إلى إكسل : طريقة أولى : طريقة بسطر واحد من الكود <<-->> طريقة ثانية : طريقة تحتاج إنشاء إجرائية مخزنةً تجهيز بيانات جدول بالصيغة XML تمهيداً لحفظها كملف <<-->> تصدير البيانات إلى ملفات نصية برمجياً إغلاق جميع الإتصالات المفتوحة بقاعدة بيانات محددة .. تمهيداً لاسترجاعها أو حذفها <<-->> الاستعلام بناء على وقت مخزن بالصيغة العربية ضمن حقل نصي ..حذف السجلات المتكررة و إبقاء عدد محدد منها في جدول.. <<-->> أسرع طريقة لحذف سجلات جدول كيف احصل على اسم جهازي والباسوورد باستخدام T-SQL <<-->> حشر أنواع الصور المختلفة في حقل من نوع Image باستخدام إجرائية مخزنة .كيف تعرف أنواع الصور المخزنة في حقل من نوع Image .. <<-->> إجرائيات مخزنة ببارامترات ديناميكية مفيدة جداً للاستعلامات استخدام رقم الحقل بدلاً من الإسم في عبارات الإستعلام <<-->> من هو أضخم الجداول في قاعدة بياناتي ؟معرفة زمن تنفيذ الإجرائيات ( لتختار الطريقة الأسرع بين إجرائياتك المخزنة ) <<-->> التعامل مع الـ Rules برمجياً الحصول على آخر صف في الجدول <<-->> قراءة ملفات XML باستخدام T-SQL برمجياً (مثال مرفق)سحب بيانات ملف إكسل إلى الـ SQL Server <<-->> تشفير النسخة الاحتياطية بكلمة مرور <<-->> التخلص من البيانات المكررة <<-->> حل مشكلة التاريخ الهجريDifferential Backup بالتعريف---------- لا إله إلا الله .. محمد رسول الله

أخوكم في الله..  Imad Ozone

#15

السلام عليكم

و شكرا لكم اخواني

معلومه عشره علي عشره

و ربنا يوفقنا جمعيا لما فيه الخير

سلام

#16

الاخوة الزملاء لماذا لايكون حذف السجلات المكررة بدون تحديد اسم معين واللي انا لاحظته تحديد " سمير " والمطلوب كيف احذف سجلات متكررة علي سبيل المثال عندي عدة قوائم نذكر منها شيء بسيط مثل

رقم المشترك

رقم الوحدة

الرمز الفعلي

وقت التسجيل

نوع النشاط

مع العلم يتم سحب Report بشكل يومي ويحذف سجلات معينه ونصادف تكرار سجل معين ونود ان يكون الجدول خالي من التكرار وش رايكم بالسؤال :::

تحياتي

امير الابداع

هذا الموضوع مغلق.

مواضيع مشابهة