Похоже, вам просто нужно больше left join
s:
SELECT
ap.audioname,
ap.userid,
ap.audioid,
u.gavatar,
u.name,
u.email,
ap.title,
ap.likes,
ap.userid,
t.tagname
FROM audioposts ap
LEFT JOIN users u ON u.id = ap.userid
LEFT JOIN entitytag et on et.audioid = ap.audioid
LEFT JOIN tags t on t.tagid = et.tagid
Я подозреваю, что это умножит ряды, поскольку audiopost
, вероятно, может иметь несколько тегов. Возможно, вы захотите собрать все имена тегов вместе, например, используя агрегирование строк. Для этого будет иметь смысл коррелированный подзапрос:
SELECT
ap.audioname,
ap.userid,
ap.audioid,
u.gavatar,
u.name,
u.email,
ap.title,
ap.likes,
ap.userid,
(
SELECT GROUP_CONCAT(t.tagname)
FROM entitytag et
LEFT JOIN tags t on t.tagid = et.tagid
WHERE et.audioid = ap.audioid
) tagnames
FROM audioposts ap
LEFT JOIN users u ON u.id = ap.userid