Bunu bir süredir anlamaya çalışıyorum ve işe yaramayacak gibi görünmüyor. Buna benzeyen bir tablom var.Eloquent kullanarak gruplanmış sonuçlar nasıl sipariş edilir?
Tablo: Sorunlar
id yearly_issue year stock created_at updated_at magazine_id
1 10 2000 1 [timestamp] [timestamp] 3
2 12 1994 6 [timestamp] [timestamp] 10
3 36 2007 10 [timestamp] [timestamp] 102
4 6 2002 7 [timestamp] [timestamp] 7
5 6 2002 2 [timestamp] [timestamp] 5
6 12 2003 9 [timestamp] [timestamp] 10
7 11 2003 12 [timestamp] [timestamp] 10
Benim sorunum sadece her dergi (sütun magazine_id) birini almak istiyorum, ben (! Kolay) ama sıralamak gerekir olmasıdır.
$issues = Issue::where('stock', ($all ? '>=' : '>'), 0)
->orderBy('year', 'desc')
->orderBy('yearly_issue', 'desc')
->take($perpage)
->get();
ben groupBy('magazine_id')
yardımcı olacağını da ekledi düşündüm, ama sadece kısmen yardımcı oluyor sanki görünüyor:
bugün itibariyle Benim, Etkili sorgusu olur. Sonuçlar doğru sırada değil. Öyleyse, benim sorum şu - bunun etrafında herhangi bir kolay yolu var mı?
Benzer sorulara çeşitli yanıtlar deniyorum, ancak uygulamayı tamamen gerçekleştiremedim.
Retrieving the last record in each group
veya
How to get the latest record in each group using GROUP BY?
fazla yardım çok takdir edilecektir.
DÜZENLEME: Ancak
SELECT i1.*, c.name AS image, m.title AS title
FROM issues i1
INNER JOIN covers c ON i1.id = c.issue_id
INNER JOIN magazines m ON i1.magazine_id = m.id
JOIN (SELECT magazine_id, MAX(year) year, MAX(yearly_issue) yearly_issue FROM issues GROUP BY magazine_id) i2
ON i1.magazine_id = i2.magazine_id
AND i1.year = i2.year
-- AND i1.yearly_issue = i2.yearly_issue
WHERE i1.stock ($all ? '>=' : '>') 0
ORDER BY i1.year DESC, i1.yearly_issue DESC
LIMIT $perpage
bu hiç bana istenilen sonucu vermiyor: Şu anda ben en yakın budur.
Awesome! =) Bu haftasonu kurtardı. – Andreas
Uooow! Bu gerçekten bir hayat kurtarıcıydı. Çok teşekkürler! –
teşekkürler bu en iyi çözümdür –