يمكن استخدام الاداتين السابقتين ل اكثر من شرط
SELECT CASE
WHEN @a <=0 THEN 'bad'
WHEN @a>=50 and @a<=60 THEN 'good'
WHEN @a>90 THEN ' Excellent'
END
SELECT CASE
WHEN @a <=0 THEN 'bad'
WHEN @a>=50 and @a<=60 THEN 'good'
WHEN @a>90 THEN ' Excellent'
END
🥰1
تستخدم هذا الدالتين في اكثر من خدمه في الاسترجاع في تحديث البيانات في الشروط في الترتيب في اغلب الاشياء
1-Use CASE in an UPDATE statement
UPDATE HumanResources.Employee
SET VacationHours = (
CASE
WHEN ((VacationHours - 10.00) < 0) THEN VacationHours + 40
ELSE (VacationHours + 20.00)
END
)
OUTPUT Deleted.BusinessEntityID,
Deleted.VacationHours AS BeforeValue,
Inserted.VacationHours AS AfterValue
WHERE SalariedFlag = 0;
2-Use CASE in a HAVING clause
3-Use CASE in an ORDER BY clause
ORDER BY CASE SalariedFlag
WHEN 1 THEN BusinessEntityID
END DESC
1-Use CASE in an UPDATE statement
UPDATE HumanResources.Employee
SET VacationHours = (
CASE
WHEN ((VacationHours - 10.00) < 0) THEN VacationHours + 40
ELSE (VacationHours + 20.00)
END
)
OUTPUT Deleted.BusinessEntityID,
Deleted.VacationHours AS BeforeValue,
Inserted.VacationHours AS AfterValue
WHERE SalariedFlag = 0;
2-Use CASE in a HAVING clause
3-Use CASE in an ORDER BY clause
ORDER BY CASE SalariedFlag
WHEN 1 THEN BusinessEntityID
END DESC
👍2
سلام الله عليكم اتمنى ان يستفيد الجميع من هذه القناه منتظر ارائكم واستفساراتكم حول طريقه الشرح وماهي المواضيع التي تحتاجو شرح فيها اكثر بحيث اذا بدانا في بنا قاعده بيانان متكامله نكون قد فهمنا كل المواضيع او اغلبها
👍1
اسعد الله اوقاتكم بكل خير
كيف نعمل استعلام يضهر لنا عدد الصفوف المكرره
SELECT column1, column2, COUNT(*)
FROM your_table
GROUP BY column1, column2
HAVING COUNT(*) > 1;
كيف نعمل استعلام يضهر لنا عدد الصفوف المكرره
SELECT column1, column2, COUNT(*)
FROM your_table
GROUP BY column1, column2
HAVING COUNT(*) > 1;
طيب اذا نريد نحذف الصفوف المكرره ونترك صف واحد من كل صف مكرر
DELETE FROM your_table
WHERE (column1) IN (
SELECT column1
FROM your_table
GROUP BY column1, column2
HAVING COUNT(*) > 1
);
DELETE FROM your_table
WHERE (column1) IN (
SELECT column1
FROM your_table
GROUP BY column1, column2
HAVING COUNT(*) > 1
);
❤1
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