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

جملة استعلام معقده

بدأه صالحvb في 5 أبريل 2009 · 1 رد · 561 مشاهدة · في قواعد بيانات Microsoft SQL Server
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

لدي جملة استعلام معقده ولم اصل لحل حيث انني مبتدئ في sql

لدي جدول موظفين

ولدي جدول تحسين مستوى الموظفين

كيف يمكنني من خلال جملة استعلام ان احدد الاشخاص الذين يحق لهم تحسين مستواهم بعد سنتين سواى تم تحسين مستواهم

من قبل ام لم يتم .

مثلا لدي الموظف ع تم تحسين مستواه ومخزن هذا التاريخ في جدول تحسين المستوى وربما تم تحسين مستوا اكثر من مره

اي بتاريخ مثلا 1/1/2005 وايضا بتاريخ 1/1/2007

بالتالي يستحق الانتقال للمستوى التالي بعد سنتين اي بتاريخ 1/1/2009 وهذه ليست مشكله لكن المشكله عندما

يكون الموظف لم يتم تحسين مستواه من قبل اي غير مخزن في جدول تحسين المستوى بالتالي يجب النظر الى تاريخ بداية عمله هل اتم سنتين ام لا

كيف يتم الربط بين الجدولين ومن ثم حصر الاشخاص الذين يستحقون تحسين المستوى. حيث لدي الحالات التاليه :

- ان يكون تم تحسين المستوى مره واحده

- ان يكون تم تحسين المستوى اكثر من مره

- ان يكون لم يتم تحسين مستواه ابدا وبالتالي ينظر الى تاريخ مباشرته العمل من خلا جدول الموظفين .

الرجاء المساعده شاكرا لكم .

#2

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

بالبداية اخي اريد ان افرض اسماء الجدوال والحقول ومن ثم الاستعلام وانت طبقها بحسب قاعدة بياناتك .

table Emp(EmpID,EmpName,Jdate)

table Level(EmpID,LevelDate)

وهنا EmpID مفتاح اساسي في جدول الموظفين وهو مفتاح غريب في جدول المستوى

select Emp.EmpID from Emp left join Level on Emp.EmpID=level.EmpID where LevelDate is null

تعطيك ارقام الموظفين الذين ليس لهم اي تقييم

select Emp.EmpID,count(Emp.EmpID) CountNb from Emp left join Level on Emp.EmpID=level.EmpID

group by Emp.EmpID

having count(*)>1 تعطيك ارقام الموظفين الذين لهم اكثر من تقييم

select Emp.EmpID,Level.LevelDate from Emp left join Level on Emp.EmpID=level.EmpID where LevelDate is not null and Emp.EmpID not in (

select Emp.EmpID from Emp left join Level on Emp.EmpID=level.EmpID

group by Emp.EmpID

having count(*)>1) تعطيك الموظفين الذين لهم تقييم واحد تماما

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