query probleem: items groeperen en ordenen op starttijd
Ik wil graag een history lijst maken met alle afgespeelde video's die in het verleden zijn afgespeeld.
Ik heb een query gemaakt die de video's ophaald, groepeerd en dit wordt allemaal netjes in de lijst gezet.
Er is alleen 1 probleem. Omdat dezelfde video meerdere malen kan worden afgespeeld, komt deze natuurlijk vaker voor in de history tabel. Deze heb ik dan met de query gegroepeerd, maar hij ordered alleen niet op de starttijd van de video.
De structuur van de tabel ziet er als volgt uit:
playlistId / videoId / startTime
en dit is de query:
Code (php)
1
2
3
4
2
3
4
$query = "SELECT V.title, count(V.title) as playedAmount FROM video AS V
JOIN playlisthistory AS P ON V.id = P.videoId
WHERE P.playlistId = $playlistId AND V.title LIKE '%$filterString%'
GROUP BY V.title ORDER BY P.startTime ";
JOIN playlisthistory AS P ON V.id = P.videoId
WHERE P.playlistId = $playlistId AND V.title LIKE '%$filterString%'
GROUP BY V.title ORDER BY P.startTime ";
Omdat hetzelfde nummer meerdere malen voor kan komen, en verschillende starttijden heeft, kan ik deze dus niet meenemen in de groepering. weet iemand hier een oplossing voor?
De bedoeling is dus, alles groeperen zodat er geen dubbeling is, en vervolgens alles ordenen op starttijd.
Alvast bedankt
Hetzelfde geldt voor de groupby.
Je kunt met MAX(p.starttime) in combinatie met de GROUP BY de laatste view pakken. Dat lijkt me het meest logisch maar sorteren op played (aantal keren gestart) kan natuurlijk ook. (maak het zo dat de gebruiker kan kiezen waarop deze wil sorteren)
Ik zou niet op v.title gaan vergelijken en dan tellen met count maar met id / video_id.