اذهب إلى المحتوى
  • 0

تجميع السجلات في قاعدة البيانات لارافيل

Amir Alsaeed

السؤال

لدي جدول للموظفين في قاعدة البيانات بهذا الشكل:

id  department_id   amount   created_at
1   10              100      2017-06-01 00:00:00
2   15              250      2017-06-01 00:00:00
....
154 10              43500    2017-12-24 00:00:00
255 15              4000     2017-12-24 00:00:00

وأريد إجراء استعلام بحيث يعيد لي السجلات مرتبة ترتيب تنازلي حسب عمود created_at ولكن لكل قسم، فلقد حاولت إجراء الاستعلام التالي:

$date = Deps::where('department_id', '=', 15)
    ->orderBy('created_at', 'DESC')
    ->first();

واستطيع استعادة سجل واحد من الجدول حسب ترتيب التاريخ، ولكن كيف يمكنني استعادة السجلات التي لها رقم قسم مختلف ومرتبة ترتيب تنازلي حسب التاريخ ويتم أخذ أول تاريخ فقط من هذا الترتيب؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

للحصول على آخر سجل لكل قسم حسب أرقام الأقسام الفريدة، يمكن تنفيذ الاستعلام التالي:

select s.*
from deps s
left join deps s1 on s.department_id = s1.department_id
and s.created_at < s1.created_at
where s1.department_id is null

وعن طريق Eloquent:

DB::table('deps as s')
  ->select('s.*')
  ->leftJoin('deps as s1', function ($join) {
        $join->on('s.department_id', '=', 's1.department_id')
             ->whereRaw(DB::raw('s.created_at < s1.created_at'));
   })
  ->whereNull('s1.department_id')
  ->get();

وبهذه الطريقة سيتم عند استعادة كل سجل مقارنته مع بقية السجلات التي تنتمي للقسم المحدد و أخذ القيمة الأصغر من التاريخ الموجود ضمن العمود created_at

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...