3) AS derived GROUP BY Albumindex ORDER BY ".SQL_RANDOM_SORT, true); // This rather cumbersome code gives us albums in a random order but tracks in order. // All attempts to do this with a single SQL query hit a brick wall. $albums = array(); $avgplays = generic_sql_query("SELECT AVG(playtotal) AS plavg FROM alplaytable", false, null, 'plavg', 0); $qstring = "SELECT TTindex, TrackNo, Albumindex FROM Tracktable JOIN alplaytable USING (Albumindex) WHERE playtotal > ".$avgplays." AND Uri IS NOT NULL AND Hidden = 0 AND isAudiobook = 0"; if ($prefs['collection_player'] == 'mopidy' && $prefs['player_backend'] == 'mpd') { $qstring .= ' AND Uri LIKE "local:%"'; } $result = generic_sql_query($qstring, false, PDO::FETCH_OBJ); foreach ($result as $obj) { if (!array_key_exists($obj->Albumindex, $albums)) { $albums[$obj->Albumindex] = array($obj->TrackNo => $obj->TTindex); } else { if (array_key_exists($obj->TrackNo, $albums[$obj->Albumindex])) { array_push($albums[$obj->Albumindex], $obj->TTindex); } else { $albums[$obj->Albumindex][$obj->TrackNo] = $obj->TTindex; } } } $count = 0; foreach($albums as $a) { ksort($a); foreach ($a as $t) { generic_sql_query("INSERT INTO pltracktable (TTindex) VALUES (".$t.")"); $count++; } } print json_encode(array('total' => $count)); ?>