delphi4arab منتديات دلفي للعرب

نسخة كاملة : جلب بيانات من عدة اعمدة بشرط في Sql Group By
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
الصفحات : 1 2
السلام عليكم ورحمة الله وبركاته
السادة الكرام

لدي table1 وفيه 3 اعمدة (id-salary-date1) ولكل id له اكثر من salary بتواريخ مختلفة

المطلوب: جلب اخر  salary مع اخر date1 لكل id

في query وضعت الكود فجلب فقط اخر تاريخ لكل id - فكيف اجلب معه راتب نفس التاريخ
كود :
select id, max(date1) as date1 from Table1 group by id;

جزاكم الله كل خير
وعليك السلام ورحمة الله وبركاته

الحل أنت تعرفه ، نفس الأمر مع date تفعله مع الاجر

كود :
select id, max(date1) as date1, max(salary) as salary from Table1 group by id;
استاذي الكريم

لا أريد تجميعاُ للاجر
بل اريد  الاجر فقط مع نفس التاريخ الاخير
و هذا الكود يعطي خطأ

كود :
select id , salary, max(date1) as date1 from Table1 group by id
(09-02-2021, 04:36 PM)samnaj00 كتب : [ -> ]استاذي الكريم

لا أريد تجميعاُ للاجر
بل اريد  الاجر فقط مع نفس التاريخ الاخير
و هذا الكود يعطي خطأ

كود :
select id , salary, max(date1) as date1 from Table1 group by id

هذه تعطي اكبر قيمة لا تقوم بالجمع

كود :
select id, max(date1) as date1, max(salary) as salary from Table1 group by id;

[صورة: 471477879.png]
[quote pid="52743" dateline="1612898957"]
هذه تعطي اكبر قيمة لا تقوم بالجمع

كود :
select id, max(date1) as date1, max(salary) as salary from Table1 group by id;


[/quote]

 توضيح للمطلوب : جلب اخر راتب مع تاريخ الراتب لكل ID . فما هو السبيل لذلك؟؟


حزاك الله كل خير

سؤال من فضلك  . طريقة ادراج صورة في المشاركة دون ارفاقها . مثل مشاركتك
عملية وضع الصورة
[صورة: 603716077.png]
1 - إقونة الصورة
2 - رابط الصورة و بعدها نضغط على إدخال

لرفع صورة تحتاج موقع يدعمه المنتدى لتحميل الصور

* توجد عدة مواقع لرفع الصور من بينها 0zz0

[صورة: 519826685.png]

 01 - فتح الصورة التي تكون مخزنة في جهازك
 02 - تضغط للرفع
 03 - نسخ الرابط و وضعه كما هو مشروح في عملية وضع الصورة
[صورة: 865401637.jpg]
كود :
SELECT T1.id, T1.salary, T1.date1  FROM Table1 T1 WHERE  T1.id in (select T2.id from Table1 T2 group by T2.id) and T1.date1 in  (select  max(T2.date1) as date1 from Table1 T2 group by T2.id)
(12-02-2021, 11:54 PM)larbiparadox كتب : [ -> ]
كود :
SELECT T1.id, T1.salary, T1.date1  FROM Table1 T1 WHERE  T1.id in (select T2.id from Table1 T2 group by T2.id) and T1.date1 in  (select  max(T2.date1) as date1 from Table1 T2 group by T2.id)


استاذي الكريم



جزاك الله كل خير و ونفعنا بعلمك وخبرتك




فالخبرة والصنعة واضحة




طيب استاذي الكريم : لو كان التاريخ 3/3/2021 مكرراً مرتين ولكل تاريخ له راتب مختلف عندئذ سيظهر التاريخان في الاستعلام مع راتبيهما
كيف نجلب اخر تاريخ مع الراتب؟

-----------------------------------------------------------------
وجدت الحل المناسب بعد اضافة حقل Auto للـ Table1 نوعه Autoinc
كود :
drop table memory tmp_table2; SELECT T1.id,T1.salary,T1.date1,T1.auto,T1.daen,T1.note into memory tmp_table2 FROM Table1 T1 WHERE  T1.id in(select T2.id from Table1 T2 group by T2.id) and T1.date1 in(select max(T2.date1) as date1 from Table1 T2 group by T2.id); SELECT T2.id, T2.salary,T2.date1,T2.auto,T2.daen,T2.note FROM memory tmp_table2 T2 WHERE  T2.id in(select T3.id from memory tmp_table2 T3 group by T3.id) and T2.auto in(select  max(T3.auto) as auto from memory tmp_table2 T3 group by T3.id);

وكل الشكر للاستاذ larbiparadox
هل هذا الحل تمام ؟ أم أن هناك حلاً افضل؟
الصفحات : 1 2