أريد سكربت يتعرف على Gap ما بين الحقول بمعنى يتعرف على الأرقام المفقوده
لأنه عناك حقل رقم تسلسلي لكن هناك أرقام مفقوده فيها , فانا أريد هذه الأرقام المفقوده
أريد سكربت يتعرف على Gap ما بين الحقول بمعنى يتعرف على الأرقام المفقوده
لأنه عناك حقل رقم تسلسلي لكن هناك أرقام مفقوده فيها , فانا أريد هذه الأرقام المفقوده
اللهم أطل عمري وأحسن عملي واختم بالشهادة أجلي
السلام عليكم
توجد طرق كثيرة واليك الطريقة والتي وجدتها الاسرع واستخدمها لاضافة رقم تسلسلي جديد
SELECT no + 1 FROM table1 AS g1 WHERE NOT EXISTS (SELECT no FROM table1 AS g2 WHERE (g2.no = g1.no + 1))
وبدل فقط اسم الجدول والحقل التسلسلي
للتنبيه :هذه الطرقة تجد الارقام الفارغة بين ارقام موجودة فمثلا لو كان اصغر رقم تسلسلي في الجدول هو 100 سيتم احضار الارقام التي اكبر من 100 ولن تبدأ من 1
رائع ما شاء الله عليك وبارك في علمك
لكن أخي الفاضل .. اذا كان هناك فارق أكثر من رقم لا يأتي به
يعني اذا كان رقم 4 ثم يليه 7 يأتي بالرقم 5 فقط دون الرقم 6
تم تعديل هذه المشاركة بواسطة مبرمج القاعده في 14 مايو 2008 في 22:59
اللهم أطل عمري وأحسن عملي واختم بالشهادة أجلي
السلام عليكم
الطريقة السابقة استخدمها لمعرفة اول رقم فارغ عند طلب رقم متسلسل جديد وذلك باضافة Select min(no+1) الى الاستعلام السابق ولعرض جميع الفراغات بحاجة الى قليل من التعديل والى استخدام جداول مؤقتة لكن سارفق لك طريقة اخرى حيث تعرض لك الارقام الغير موجودة على الشكل (من الى ) وهي كما يلي
CREATE TABLE gaps(ID int NOT NULL PRIMARY KEY)
INSERT INTO gaps values(1)
INSERT INTO gaps values(2)
INSERT INTO gaps values(3)
INSERT INTO gaps values(4)
INSERT INTO gaps values(6)
INSERT INTO gaps values(7)
INSERT INTO gaps values(8)
INSERT INTO gaps values(10)
INSERT INTO gaps values(14)
INSERT INTO gaps values(15)
INSERT INTO gaps values(16)
INSERT INTO gaps values(17)
INSERT INTO gaps values(38)
Select 'البداية' = LastSeqNumber + 1
, 'النهاية' = NextSeqNumber - 1
, 'العدد' = NextSeqNumber - (LastSeqNumber + 1)
from ( Select LastSeqNumber = (Select isnull(Max(Seq2.ID),0) as SeqNumber
from Gaps Seq2
where (Seq2.ID) < ( Seq1.ID ) )
, NextSeqNumber = ID
from Gaps Seq1
) as A
where NextSeqNumber - LastSeqNumber > 1
order by LastSeqNumberتم تعديل هذه المشاركة بواسطة TareqVB في 15 مايو 2008 في 08:50
شكرا
تم تعديل هذه المشاركة بواسطة مبرمج القاعده في 15 مايو 2008 في 14:56
اللهم أطل عمري وأحسن عملي واختم بالشهادة أجلي
السلام عليك أخي الكريم
جزاك الله كل خير
ممكن كود يعطيك أصغر رقم غير موجود يعني لو وجد 7 وغير موجود ما قبلها يعطيك 1
ولو تتفضل إذا كان ممكن كود يجعل الجداول ترتب نفسها تلقائيا لأن أصلا الأرقام عندي تزداد أوتوماتيكيا : يعني لو انحذف 7 يصبح الي بعده هو الرقم 7 وهكذا
شكرا جزيلا وجزاك الله كل خير في الدنيا والاخرة
السلام عليكم
اقتباسممكن كود يعطيك أصغر رقم غير موجود يعني لو وجد 7 وغير موجود ما قبلها يعطيك 1
في المشاركة الثانية الاجراء يقوم بهذا الامر بشكل ممتاز يبقيى عليك ان تفحص هل موجود الواحد ام لا مثل
select * from mytable where id =1
وافحص بطريقتك اذا رجع قيم ام لا بعد ذلك يرجع أي ارقام فارغة بشكل صحيح
اقتباسولو تتفضل إذا كان ممكن كود يجعل الجداول ترتب نفسها تلقائيا لأن أصلا الأرقام عندي تزداد أوتوماتيكيا : يعني لو انحذف 7 يصبح الي بعده هو الرقم 7 وهكذا
update myTable set id =id-1 where id >7