منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : سؤال في جملة select
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
لدي جدول بحالة الموظفين الوظيفية يحتوي على رقم كود الموظف ورقم تحديثه بجانب حقول بيانات اخرى للموظف
ويتكرر كود الموظف في كل مرة اقوم فيها باضافة حقل جديد برقم تحديث جديد لحالة الموظف
اريد ان اظهر 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
جرب هذا الاستعلام 

كود :
SELECT Top 1 [update_no] FROM table_1 WHERE (code = code)
(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

تمنياتى لك التوفيق
هكذا سأكتب الكود :
[attachment=18028]
كود :
    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
                          )