created_at
. के आधार पर प्रत्येक शहर के लिए प्रति ग्राहक नवीनतम रिकॉर्ड प्राप्त करने के लिए आप स्वयं शामिल होने का उपयोग कर सकते हैं
DB::table('yourTable as t')
->select('t.*')
->leftJoin('yourTable as t1', function ($join) {
$join->on('t.Customer','=','t1.Customer')
->where('t.City', '=', 't1.City')
->whereRaw(DB::raw('t.created_at < t1.created_at'));
})
->whereNull('t1.id')
->get();
सादे SQL में यह कुछ इस तरह होगा
select t.*
from yourTable t
left join yourTable t1
on t.Customer = t1.Customer
and t.City = t1.City
and t.created_at < t1.created_at
where t1.id is null
सेल्फ इनर जॉइन के साथ एक और तरीका होगा
select t.*
from yourTable t
join (
select Customer,City,max(ID) ID
from yourTable
group by Customer,City
) t1
on t.Customer = t1.Customer
and t.City = t1.City
and t.ID = t1.ID