تقييم الموضوع :
  • 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
جرب هذا الاستعلام 

كود :
SELECT Top 1 [update_no] FROM table_1 WHERE (code = code)
الرد }}}
تم الشكر بواسطة: عبدالله الدوسري
#3
(15-05-18, 11:43 AM)تناسيم كتب : لدي جدول بحالة الموظفين الوظيفية يحتوي على رقم كود الموظف ورقم تحديثه بجانب حقول بيانات اخرى للموظف
ويتكرر كود الموظف في كل مرة اقوم فيها باضافة حقل جديد برقم تحديث جديد لحالة الموظف
اريد ان اظهر 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


الكود لديك لا يوجد به اى مشكلة ولا يحدث اى مشكلة

الا اذا كنت تكتب هذا الجزء غير صحيح تحليلياً
كود :
code = code

فاعطيك مثال على كودك على جدول بقاعدة البيانات
الكود
كود :
SELECT *
FROM ACC0217C
WHERE CREDIT =
                (SELECT
                CREDIT = MAX(CREDIT)
                FROM ACC0217C
                WHERE GL_AC_ID = '41230010')

صورة الناتج الافتراضى لاستخدام الكود البسيط التالى
كود :
SELECT *
FROM ACC0217C
WHERE GL_AC_ID = '41230010'


وبعد استخدام الكود الاول بالرد


اذا كان كل ما يشغل بالك هو عرض ناتج اخر كما هو مشير اليه بالاطار الاحمر والسبب ناتج بان الكود كان عن 
كود :
CREDIT =

اذا احتجت ان يكون الناتج على مثال CODE كما فى الكود لديك ليكون الناتج كما فى الصورة


كل ما عليك استخدام الكود التالى
كود :
SELECT *
FROM ACC0217C
WHERE CREDIT =
                (SELECT
                CREDIT = MAX(CREDIT)
                FROM ACC0217C
                WHERE GL_AC_ID = '41230010')
AND GL_AC_ID = '41230010'

الكود بطريقة مسمياتك الخاصة
كود :
SELECT *
FROM table_1
WHERE update_no =
                (SELECT
                Expr1 = MAX(update_no)
                FROM table_1
                WHERE code = code)
AND code = code

تمنياتى لك التوفيق
{ وَقُل رَّبِّ زِدْنِي عِلْمًا }
[ كن على يقين من اعمالنا نخطئ ومن اخطائنا نتعلم ولذلك لا شي مستحيل ]

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


 شرح كيفية عمل قاعدة بيانات تعمل على اكثر من جهاز على الشبكة الداخلية
الرد }}}
تم الشكر بواسطة: عبدالله الدوسري , sendbad100
#4
هكذا سأكتب الكود :
   
كود :
    SELECT T1.*
    FROM table_1 AS T1
    WHERE T1.update_no = (
                          SELECT TOP 1 T2.update_no
                          FROM table_1 AS T2
                          WHERE (T2.code = T1.code)
                          order by T2.update_no DESC
                          )
الرد }}}
تم الشكر بواسطة: elgokr , sendbad100



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


يقوم بقرائة الموضوع: