Hallo,

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:

$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 ";


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
Ik zou niet op v.title gaan vergelijken en dan tellen met count maar met id / video_id.
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)


SELECT
	v.title, COUNT(v.video_id) AS played, MAX(p.starttime) AS latest_view
FROM
	video v
JOIN
	playlisthistory p
ON
	v.video_id = p.video_id
GROUP BY
	v.video_id
ORDER BY
	p.starttime ASC
Ik heb het al opgelost door de query hierin te veranderen


SELECT V.title, V.videoId, V.id,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 MAX(P.startTime) DESC
Ik zou niet op v.title gaan vergelijken en dan tellen met count maar met id / video_id.

Reageren