SELECT LTRIM(RTRIM(column1)) as column1,column2,column... ,
count(LTRIM(RTRIM(column1)))as cno into #Temp FROM your_table
where st_status=0 and len(LTRIM(RTRIM(column1)))>0
GROUP BY LTRIM(RTRIM(column1)),column2,column... ,
HAVING COUNT(*) > 1
select ROW_NUMBER() OVER (PARTITION BY LTRIM(RTRIM(column1)) ORDER BY LTRIM(RTRIM(column1)) ASC)as SR,*
into #TEmp2
from your_table s where LTRIM(RTRIM(column1)) in(select t.column1 from #Temp t where t.column2=s.column2 and t.column3=s.column3)
order by LTRIM(RTRIM(column1))
delete your_table where ID
in(select t.ID from #TEmp2 t where t.SR<>1 and t.column2=your_table.column2
and t.column3=your_table.column3)
drop table #Temp
drop table #Temp2
count(LTRIM(RTRIM(column1)))as cno into #Temp FROM your_table
where st_status=0 and len(LTRIM(RTRIM(column1)))>0
GROUP BY LTRIM(RTRIM(column1)),column2,column... ,
HAVING COUNT(*) > 1
select ROW_NUMBER() OVER (PARTITION BY LTRIM(RTRIM(column1)) ORDER BY LTRIM(RTRIM(column1)) ASC)as SR,*
into #TEmp2
from your_table s where LTRIM(RTRIM(column1)) in(select t.column1 from #Temp t where t.column2=s.column2 and t.column3=s.column3)
order by LTRIM(RTRIM(column1))
delete your_table where ID
in(select t.ID from #TEmp2 t where t.SR<>1 and t.column2=your_table.column2
and t.column3=your_table.column3)
drop table #Temp
drop table #Temp2
❤2
هذا الكود الخاص بالحذف لابد ان تحفظ البيانات المكرره في جدول وهمي لكي ما تحذف جميع الصفوف
كيف نعمل تحديث لجدول عن طريق الربط باكثر من جدول
التحديث باستخدام العلاقات INNER JOIN
طريقه حلوه وسهله
UPDATE Per
SET
Per.PersonCityName=Addr.City,
Per.PersonPostCode=Addr.PostCode
FROM Persons Per
INNER JOIN
AddressList Addr
ON Per.PersonId = Addr.PersonId
التحديث باستخدام العلاقات INNER JOIN
طريقه حلوه وسهله
UPDATE Per
SET
Per.PersonCityName=Addr.City,
Per.PersonPostCode=Addr.PostCode
FROM Persons Per
INNER JOIN
AddressList Addr
ON Per.PersonId = Addr.PersonId
سلام الله عليكم العفوا على التاخير لاكن ان شاء الله نستمر بجهودكم وتفاعلكم من خلال نشر القروب الى اكبر عدد من الطلاب لانه كلما كان المتفاعلين اكثر في النقاش وطرح المقترحات كلما كانت الاستفاده اكثر
❤1
اليوم فيه معانا درس حلو جدا يحتاجه اغلب المبرمجين الذين ينشئون استرجاعات كبيره عندما يسترجعوا متغيرات من جداول اخرى
declare @id int
declare @RLivel nvarchar(50), @Year int ,@vale decimal(18,2)
قبل التبسيط
set @RLivel= (select top 1 txt from TableName where id=@id)
set @Year= (select top 1 Yea from TableName where id=@id)
set @vale= (select top 1 vale from TableName where id=@id)
select @RLivel,@Year,@vale
declare @id int
declare @RLivel nvarchar(50), @Year int ,@vale decimal(18,2)
قبل التبسيط
set @RLivel= (select top 1 txt from TableName where id=@id)
set @Year= (select top 1 Yea from TableName where id=@id)
set @vale= (select top 1 vale from TableName where id=@id)
select @RLivel,@Year,@vale
❤1
الذي حابب ينظم للقناه الاستفسارات هذا الرابط
https://t.me/c/1696274902/571
https://t.me/c/1696274902/571
👍3
ما هي افضل الطرق لجعل الاسترجاع سريع
ماهي طرق تسريع الاسترجاعات
ممكن مقترحاتكم وارائكم في هذا الموظوع
ماهي طرق تسريع الاسترجاعات
ممكن مقترحاتكم وارائكم في هذا الموظوع
هناك العديد من الطرق التي يمكن اتباعها لتحسين أداء البروسيجرات في قاعدة بيانات SQL Server.
1-استخدم مؤشرات (Indexes): تأكد من وجود مؤشرات مناسبة على الجداول المستخدمة في البروسيجرات. المؤشرات فوائدها تساعد في تحسين سرعة استعلامات قاعدة البيانات عن طريق تسريع عمليات البحث والفرز.
مثال CREATE INDEX idx_column ON table_name (column_name);
2-تجنب الحلقات المتداخلة (Nested Loops): قم بتجنب استخدام الحلقات المتداخلة في البروسيجرات، خاصة إذا كانت الحلقات تتعامل مع مجموعات كبيرة من البيانات. بدلاً من ذلك، حاول استخدام عمليات الانضمام (Joins) والاستعلامات المجمعة (Aggregates) لتحسين أداء البروسيجرات.
SELECT t1.column1, t2.column2
FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.id;
1-استخدم مؤشرات (Indexes): تأكد من وجود مؤشرات مناسبة على الجداول المستخدمة في البروسيجرات. المؤشرات فوائدها تساعد في تحسين سرعة استعلامات قاعدة البيانات عن طريق تسريع عمليات البحث والفرز.
مثال CREATE INDEX idx_column ON table_name (column_name);
2-تجنب الحلقات المتداخلة (Nested Loops): قم بتجنب استخدام الحلقات المتداخلة في البروسيجرات، خاصة إذا كانت الحلقات تتعامل مع مجموعات كبيرة من البيانات. بدلاً من ذلك، حاول استخدام عمليات الانضمام (Joins) والاستعلامات المجمعة (Aggregates) لتحسين أداء البروسيجرات.
SELECT t1.column1, t2.column2
FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.id;
تابع طرق تسريع الاسترجاعات والتحسين في الاداء وتجنب البط
3-استخدام الاستعلامات المجمعة (Aggregates) بدلاً من الحلقات المتداخلة (Nested Loops):
SELECT column1, SUM(column2) AS total
FROM table_name
GROUP BY column1;
3-استخدام الاستعلامات المجمعة (Aggregates) بدلاً من الحلقات المتداخلة (Nested Loops):
SELECT column1, SUM(column2) AS total
FROM table_name
GROUP BY column1;
تذكر أنه يجب تحليل الأداء وتقييم النتائج بعد تنفيذ أي تحسينات لتحديد الأثر الفعلي على أداء البروسيجات. قد تختلف النتائج بناءً على هيكل البيانات وحجمها وتكوين الخادم والحمولة الحالية.
❤2
مفهوم ترتيب البيانات
في SQL يمكنك ترتيب البيانات التي نجلبها بشكل تصاعدي ( Ascending ) أو تنازلي ( Descending ) سواء كنت تتعامل مع بيانات نصية أو رقمية. فمثلاً تستطيع ترتيب نتيجة الإستعلام نسبة لرواتب الموظفين من الأصغر إلى الأكبر, و ترتيب أسماء الموظفين بشكل أبجدي من الألف إلى الياء . شكل الاستعلام
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
نضع الكلمة ORDER BY في نهاية الإستعلام و نضع بعدها إسم العمود أو الأعمدة التي نريد ترتيب السطور على أساسها.
إفتراضياً الكلمة ORDER BY ترتب السطور بشكل تصاعدي. إذا أردت ترتيب السطور بشكل تنازلي يجب أن تضيف الكلمة DESC في النهاية.
في SQL يمكنك ترتيب البيانات التي نجلبها بشكل تصاعدي ( Ascending ) أو تنازلي ( Descending ) سواء كنت تتعامل مع بيانات نصية أو رقمية. فمثلاً تستطيع ترتيب نتيجة الإستعلام نسبة لرواتب الموظفين من الأصغر إلى الأكبر, و ترتيب أسماء الموظفين بشكل أبجدي من الألف إلى الياء . شكل الاستعلام
SELECT column1, column2, ...
FROM table_name
ORDER BY column1, column2, ... ASC|DESC;
نضع الكلمة ORDER BY في نهاية الإستعلام و نضع بعدها إسم العمود أو الأعمدة التي نريد ترتيب السطور على أساسها.
إفتراضياً الكلمة ORDER BY ترتب السطور بشكل تصاعدي. إذا أردت ترتيب السطور بشكل تنازلي يجب أن تضيف الكلمة DESC في النهاية.
👍1
3- جلب كل معلومات الموظفين مع ترتيب الأسطر بشكل تصاعدي نسبةً للنص الذي ينتج عن دمج الحقلين first_name و last_name.
أي سيتم عرض إسم الموظف و إسم عائلته في حقل واحد و على أساسه سيتم ترتيب الأسطر.
SELECT id AS 'Id', CONCAT(first_name, ' ', last_name) AS 'Full Name', salary AS 'Salary'
FROM employees
ORDER BY CONCAT(first_name, ' ', last_name) asc
ترتيب جميع الأسطر بشكل تصاعدي بناءاً على القيم الموضوعة في العمود Full Name.
واذا نريد العكس نكتب بدل asc نكتب desc
أي سيتم عرض إسم الموظف و إسم عائلته في حقل واحد و على أساسه سيتم ترتيب الأسطر.
SELECT id AS 'Id', CONCAT(first_name, ' ', last_name) AS 'Full Name', salary AS 'Salary'
FROM employees
ORDER BY CONCAT(first_name, ' ', last_name) asc
ترتيب جميع الأسطر بشكل تصاعدي بناءاً على القيم الموضوعة في العمود Full Name.
واذا نريد العكس نكتب بدل asc نكتب desc
👍1
مراجعه سريعه امر انشاء قاعده بيانات جديده
مثال قم بانشاء قاعده بيانات باسم Hotale مستشفى
CREATE DATABASE Hotale;
ملاحضه لا تستطيع إنشاء أكثر من قاعدة بيانات بنفس الإسم.
مثال قم بانشاء قاعده بيانات باسم Hotale مستشفى
CREATE DATABASE Hotale;
ملاحضه لا تستطيع إنشاء أكثر من قاعدة بيانات بنفس الإسم.
👍1
لو حاولت تنفذ الامر مره اخرى
CREATE DATABASE Hotale;
سوف تظهر لك رساله
Database 'Hotale' already exists. Choose a different database name.
تعني انك تحاول تنشاء قاعده بيانات باسم Hotale وهذه القاعده موجوده بالفعل
CREATE DATABASE Hotale;
سوف تظهر لك رساله
Database 'Hotale' already exists. Choose a different database name.
تعني انك تحاول تنشاء قاعده بيانات باسم Hotale وهذه القاعده موجوده بالفعل
👍1
لكي نتجنب الخطأ لابد من التأكد ان قاعده البيانات غير موجوده
هذا الشرط يختبر اذا كانت قاعده البيانات غير موجوده يضيفها مالم لا يعمل اي شي
IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = 'Hotale')
CREATE DATABASE Hotale;
هذا الشرط يختبر اذا كانت قاعده البيانات غير موجوده يضيفها مالم لا يعمل اي شي
IF NOT EXISTS (SELECT name FROM sys.databases WHERE name = 'Hotale')
CREATE DATABASE Hotale;
👍1