المشاركات : 102
المواضيع 15
:
: 96
الإنتساب : Apr 2017
(15-02-2021, 03:58 PM)samnaj00 كتب : هل هذا الحل تمام ؟ أم أن هناك حلاً افضل؟
بعد التجربة تبين عدم نجاح الكود لانه يجلب اخر سجل لل id سواء كان تاريخه الاكبر او غير ذلك
فلو كان تواريخ ال id على التسلسل (4/4/2021 - 5/5/2021 - 2/2/2021 ) فانه يجلب اخر سجل وهو 2/2/2021
هل من حل؟
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
أكبر تاريخ
كود : SELECT a.id, a.date1, a.salary
FROM Table1 a
INNER JOIN (
SELECT id, MAX(date1) date2
FROM Table1
GROUP BY id
) b ON a.id = b.id AND a.date1 = b.date2
أكبر أجر
كود : SELECT a.id, a.date1, a.salary
FROM Table1 a
INNER JOIN (
SELECT id, MAX(salary) salary1
FROM Table1
GROUP BY id
) b ON a.id = b.id AND a.salary = b.salary1
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
المشاركات : 102
المواضيع 15
:
: 96
الإنتساب : Apr 2017
16-02-2021, 04:24 PM
(آخر تعديل لهذه المشاركة: 16-02-2021, 04:25 PM بواسطة samnaj00.)
جزاك الله كل خير استاذي الكريم محمد
خبرة واتقان
بعد هذا الكود سأنظر ملياً في inner join ان شاء الله تعالى
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
المشاركات : 522
المواضيع 46
:
: 394
الإنتساب : Sep 2011
-----------------------------------------------------------------
وجدت الحل المناسب بعد اضافة حقل 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);
أترك الحل الخاص بك كما هو فقط اضف أندكس لـ date1 كما في الصورة
عند التنفيذ تتغير النتيجة
اللّهمّ فرّج أُموراً ضَاقت بها صُدورنا وعجزت بها حيلتنا وقلّ بها صَبرنا الّلهمّ أَسعِد قلوبنا بما أنتَ أعْلَمُ بِهِ مِنّا
المشاركات : 102
المواضيع 15
:
: 96
الإنتساب : Apr 2017
16-02-2021, 05:41 PM
(آخر تعديل لهذه المشاركة: 16-02-2021, 05:44 PM بواسطة samnaj00.)
ما شاء الله عليك استاذ محمد
دائماً جاهز للمعلومة
استاذي الكريم larbiparadox اشكرك على الاضافة
المشاركات : 102
المواضيع 15
:
: 96
الإنتساب : Apr 2017
السلام عليكم ورحمة الله وبركاته
السادة الكرام
جملة INNER JOIN لم تنجح لوحدها في جلب اخر تاريخ لانه اذا كان التاريخ مكرراً لل ID مثلاً 2/2/2021 مكرراً مرتين لل ID رقم 1 فانه سيظهر التاريخان في الاستعلام
لذلك فعلت في INNER JOIN كما فعلت في جملة iN باضافة حقل AUTO لاظهار النتيجة المرجوة
INNER JOIN
كود : drop table memory tmp_tb;
SELECT a.id, a.date1, a.salary, a.daen, a.note, a.auto INTO memory tmp_tb
FROM Table1 a
INNER JOIN (SELECT id, MAX(date1) date2 FROM Table1
GROUP BY id) b ON a.id = b.id AND a.date1 = b.date2;
SELECT a.id, a.date1, a.salary, a.daen, a.note, a.auto
FROM memory tmp_tb a
INNER JOIN (SELECT id, MAX(auto) auto2 FROM memory tmp_tb
GROUP BY id ) b ON a.id = b.id AND a.auto = b.auto2
IN
كود : drop table memory tmp_tb;
SELECT T1.id, T1.date1, T1.salary, T1.daen, T1.note, T1.auto into memory tmp_tb 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.date1, T2.salary, T2.daen, T2.note, T2.auto FROM memory tmp_tb T2
WHERE T2.id in(select T3.id from memory tmp_tb T3 group by T3.id)
and T2.auto in(select max(T3.auto) as auto from memory tmp_tb T3 group by T3.id);
فهل يمكن جلب النتيجة بجملة واحدة فقط؟
المشاركات : 3,703
المواضيع 101
:
: 579
الإنتساب : Feb 2008
(17-02-2021, 04:06 PM)samnaj00 كتب : جملة INNER JOIN لم تنجح لوحدها في جلب اخر تاريخ لانه اذا كان التاريخ مكرراً لل ID مثلاً 2/2/2021 مكرراً مرتين لل ID رقم 1 فانه سيظهر التاريخان في الاستعلام هذا غير منطقي
كيف يكون لنفس الشخص أجرين بنفس التاريخ !؟
رَبَّنَا اغْفِرْ لِي وَلِوَالِدَيَّ وَلِلْمُؤْمِنِينَ يَوْمَ يَقُومُ الْحِسَابُ
المشاركات : 102
المواضيع 15
:
: 96
الإنتساب : Apr 2017
17-02-2021, 04:34 PM
(آخر تعديل لهذه المشاركة: 17-02-2021, 04:35 PM بواسطة samnaj00.)
(17-02-2021, 04:14 PM)محمد عبد العزيز كتب : (17-02-2021, 04:06 PM)samnaj00 كتب : جملة INNER JOIN لم تنجح لوحدها في جلب اخر تاريخ لانه اذا كان التاريخ مكرراً لل ID مثلاً 2/2/2021 مكرراً مرتين لل ID رقم 1 فانه سيظهر التاريخان في الاستعلام هذا غير منطقي
كيف يكون لنفس الشخص أجرين بنفس التاريخ !؟
المعذرة استاذي الكريم
هذه البيانات للمثال فقط
يمكن ان نقول مثلاً دفعات نقدية من الزبون بدل اجر
المشاركات : 102
المواضيع 15
:
: 96
الإنتساب : Apr 2017
(17-02-2021, 04:06 PM)samnaj00 كتب : السلام عليكم ورحمة الله وبركاته
السادة الكرام
جملة INNER JOIN لم تنجح لوحدها في جلب اخر تاريخ لانه اذا كان التاريخ مكرراً لل ID مثلاً 2/2/2021 مكرراً مرتين لل ID رقم 1 فانه سيظهر التاريخان في الاستعلام
لذلك فعلت في INNER JOIN كما فعلت في جملة iN باضافة حقل AUTO لاظهار النتيجة المرجوة
INNER JOIN
كود : drop table memory tmp_tb;
SELECT a.id, a.date1, a.salary, a.daen, a.note, a.auto INTO memory tmp_tb
FROM Table1 a
INNER JOIN (SELECT id, MAX(date1) date2 FROM Table1
GROUP BY id) b ON a.id = b.id AND a.date1 = b.date2;
SELECT a.id, a.date1, a.salary, a.daen, a.note, a.auto
FROM memory tmp_tb a
INNER JOIN (SELECT id, MAX(auto) auto2 FROM memory tmp_tb
GROUP BY id ) b ON a.id = b.id AND a.auto = b.auto2
فهل يمكن جلب النتيجة بجملة واحدة فقط؟
|