Ik probeer een soort historie systeem te bouwen in een webapp die ik ontwikkel. Het gaat hierbij om afleveringen en de voortgang, een 1:N relatie dus. Nu wil ik een overzicht maken, van afleveringen, gesorteerd op / met behulp van die historie, waarbij alleen van de nieuwste historie wordt uitgegaan.
Ik heb dus twee tabellen, eentje met afleveringen en wat info, zoals seizoen, afleveringnummer binnen dat seizoen, noem maar op. De historie houdt dan enkel de voortgang bij en daarop moet het overzicht gesorteerd worden.
Nu heb ik als SQL-query het volgende:
Om het allemaal nog wat 'leuker' te maken, maak ik voor de webapp gebruik van Laravel en heb dus de beschikking over Eloquent. Ik heb diverse queries geprobeerd (en zit momenteel op deze query wat het dichtste bij het resultaat komt), maar tot nu toe nog niet echt de juiste query gevonden. Ook heb ik totaal geen idee wat ik over het hoofd zie, vandaar dat ik even bij jullie aanklop.
Mochten jullie informatie missen, schroom dan niet om de vraag te stellen!
Ik heb dus twee tabellen, eentje met afleveringen en wat info, zoals seizoen, afleveringnummer binnen dat seizoen, noem maar op. De historie houdt dan enkel de voortgang bij en daarop moet het overzicht gesorteerd worden.
Nu heb ik als SQL-query het volgende:
SQL:
Dit lijkt te werken. Lijkt, omdat deze query de hoogste waarde van drie kolommen selecteert die ooit ingevuld zijn en niet die van de laatste bijbehorende historie record. An sich kan het systeem hiermee verder, maar ik wil het graag goed doen, het liefst dus zonder die max() in de query te hoeven gebruiken en toch de info van de nieuwste record in de historie direct naar boven hebben.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| select `episodes`.`id`, `episodes`.`plot`, `episodes`.`serie_id`, `episodes`.`season`, `episodes`.`episode`, `episodes`.`name`, max(episode_histories.x) as x, max(episode_histories.y) as y, max(episode_histories.z) as z from `episodes` inner join `episode_histories` on `episodes`.`id` = `episode_histories`.`episode_id` where `completed` = '0' and `episodes`.`deleted_at` is null group by `episodes`.`id` order by `x` desc, `y` desc, `z` desc |
Om het allemaal nog wat 'leuker' te maken, maak ik voor de webapp gebruik van Laravel en heb dus de beschikking over Eloquent. Ik heb diverse queries geprobeerd (en zit momenteel op deze query wat het dichtste bij het resultaat komt), maar tot nu toe nog niet echt de juiste query gevonden. Ook heb ik totaal geen idee wat ik over het hoofd zie, vandaar dat ik even bij jullie aanklop.
Mochten jullie informatie missen, schroom dan niet om de vraag te stellen!