تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
سؤال في جملة select
#1
لدي جدول بحالة الموظفين الوظيفية يحتوي على رقم كود الموظف ورقم تحديثه بجانب حقول بيانات اخرى للموظف
ويتكرر كود الموظف في كل مرة اقوم فيها باضافة حقل جديد برقم تحديث جديد لحالة الموظف
اريد ان اظهر max(update_no) فقط لكل كود
وقد قمت بكتابة الكود التالي
SELECT *
FROM table_1
WHERE update_no =
SELECT MAX(update_no) AS Expr1
FROM table_1
WHERE (code = code)

وقد اشتغل الكود ولكنه اظهر احدث حالات التحديث في الجدول كله
ولكني اريد اظهار احدث حالات التحديث لكل موظف على حدة يعني لكل كود موظف
ولذلك قمت باضافة group by code لجملة select المذكورة في الاعلى
ولكنه اعترض على استخدام group by مع جملة select
الرد }}}
تم الشكر بواسطة:
#2
هل طرح السؤال غير واضح اقوم بالتوضيح اكثر
الرد }}}
تم الشكر بواسطة:
#3
يرجى التوضيح اكثر لاني حسب ما فهمت ساجيب 

لفعل ذلك، تحتاج إلى استخدام استعلام فرعي لتحديد أكبر رقم تحديث لكل كود موظف، ثم انضمام هذا الاستعلام الفرعي مع الجدول الرئيسي لجلب السجلات التي تحتوي على أكبر رقم تحديث لكل موظف.

إليك كيفية القيام بذلك باستخدام SQL Server:

PHP كود :
SELECT t1.*
FROM table_1 AS t1
INNER JOIN 
(
 
   SELECT codeMAX(update_no) AS max_update_no
    FROM table_1
    GROUP BY code
) AS t2
ON t1
.code t2.code AND t1.update_no t2.max_update_no 

في هذا الاستعلام:

الاستعلام الفرعي SELECT code, MAX(update_no) AS max_update_no FROM table_1 GROUP BY code يقوم بإرجاع كل كود موظف مع أكبر رقم تحديث له.
ثم يتم الانضمام الذاتي بين الجدول الأصلي table_1 والنتائج الفرعية t2 بناءً على كود الموظف ورقم التحديث الأحدث.
هذا يضمن أن كل موظف يظهر فقط مع أحدث حالة تحديث له.
الرد }}}
تم الشكر بواسطة:



التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم