Maximální záznamy v group skupině
- sejmor
- Člen | 63
Zdravím všechny,
Mám jeden stupid dotaz – asi to tu bylo, ale nemůžu to najít. Abych to zjednodušil mám hromadu dat a potřebuju je seskupit podle jednoho sloupce ale abych měl ve výsledném záznamu nejvyšší hodnotu té dané skupiny např. podle data. a hlavně jeho další sloupce. V klasickém SQL se dělají 2 selecty, které se spojí JOINEM.
Převedeno na používané knihy: Mám tabulku knihy, která má sloupce autor_id, datum_vydani, jmeno. A já potřebuji vypsat všechny poslední knihy jednotlivých autorů.
KLASIK SQL:
select * from knihy JOIN (select autor_id, max(datum_vydani) as maxdatum from knihy GROUP BY autor_id) as nejvyssi ON knihy.datum_vydani=nejvyssi.maxdatum AND knihy.autor_id=nejvyssi.autor_id
V Nette DB by mě lákalo (Mám nette 2.018)
$book->group('author','MAX('datum_vydani'))
Ale to fungovat nebude
Jak na to ? Ťukněte mi prosím někdo :)
- CZechBoY
- Člen | 3608
Jediný co mě napadlo tak je hack, co občas používám, abych dostal „celej“ sql dotaz do hlavního dotazu.
SELECT *
FROM kniha
HAVING datum_vydani = (
SELECT MAX(datum_vydani)
FROM kniha k2
WHERE k2.autor_id = kniha.autor_id
);
$db->db->table('kniha')
->having('datum_vydani = (SELECT MAX(datum_vydani) FROM kniha `k2` WHERE `k2`.autor_id = kniha.autor_id)');
Editoval CZechBoY (1. 11. 2015 12:02)