SELECT `m`.*, `u`.`username`, `m2i`.`instrumentid`, GROUP_CONCAT(i.instrument) AS `instrumentslist`, `tl`.`length`
FROM `s4b_musicfiles` AS `m`
LEFT JOIN `s4b_users` AS `u` ON m.userid = u.id
LEFT JOIN `s4b_music2instrument` AS `m2i` ON m.id = m2i.musicid
LEFT JOIN `s4b_instruments` AS `i` ON i.id = m2i.instrumentid
LEFT JOIN `s4b_tracklength` AS `tl` ON m.length = tl.id
WHERE (accepted ='1')
GROUP BY `m`.`id`
Z tego co widzę działa tak jak chciałem. Do dziś nie słyszałem o funkcji GROUP_CONCAT

Dzięki za pomoc:)
EDIT:
Odświeżam, żeby zapytać jeszcze o kolejną rzecz. Tamto zapytanie było OK, dodałem do niego podobna formułę dla 2giej tabeli - nastrój. Zapytanie wygląda teraz tak:
SELECT `m`.*, `u`.`username`, `m2i`.`instrumentid`, GROUP_CONCAT(i.instrument SEPARATOR ', ') AS `instrumentslist`, `m2m`.`moodid`, GROUP_CONCAT(mo.mood SEPARATOR ', ') AS `moodlist`, `tl`.`length`
FROM `s4b_musicfiles` AS `m`
LEFT JOIN `s4b_users` AS `u` ON m.userid = u.id
LEFT JOIN `s4b_music2instrument` AS `m2i` ON m.id = m2i.musicid
LEFT JOIN `s4b_instruments` AS `i` ON i.id = m2i.instrumentid
LEFT JOIN `s4b_music2mood` AS `m2m` ON m.id = m2m.musicid
LEFT JOIN `s4b_mood` AS `mo` ON mo.id = m2m.moodid
LEFT JOIN `s4b_tracklength` AS `tl` ON m.length = tl.id
WHERE (accepted ='1')
GROUP BY `m`.`id`
I w wynikach jest teraz pomieszane. Wszystkie instrumenty i wpisy są pokazywane po kilka razy:/