Tengo una consulta SQL que filtra los registros según el tipo de etiquetas que tienen. A veces, los registros tienen varias etiquetas. El problema es que cuando filtro por una etiqueta, los registros devueltos solo incluyen la etiqueta con la que filtré. Al filtrar por una etiqueta, me gustaría obtener todos los registros con esa etiqueta, con todas sus etiquetas.
es decir, al filtrar por "una etiqueta rosa" me gustaría tener... 
Pero en lugar de eso, me sale esto... 
A continuación se muestra mi consulta SQL
var logsQuery = `PREPARE LogQuery (text) AS\ SELECT trackerlogs.*,\ trackers.serialnumber,\ trackers.active,\ trackers.actdate,\ trackers.deactdate,\ trackerclaims.devicename,\ trackerclaims.claimtype,\ t.id AS tagid,\ t.tagname,\ t.color\ FROM trackerlogs INNER JOIN\ trackers ON trackerlogs.deviceid = trackers.id\ INNER JOIN trackerclaims ON trackerclaims.deviceid = trackers.id\ LEFT JOIN\ (SELECT tags.*, trlogtags.logid AS logid from tags\ INNER JOIN trlogtags ON trlogtags.tagid = tags.id\ ${tags.length > 0 ? `AND t.id IN (${tags.join()})` : ""}\ EXECUTE LogQuery('${search === "" ? "%" : "%" + search + "%"}');`;Creo que la parte relevante de la consulta es:
${tags.length > 0 ? `AND t.id IN (${tags.join()})` : ""}\Sin embargo, cada vez que trato de cambiar esto, ya no puedo filtrar por etiquetas.
Cualquier ayuda es muy apreciada. Avíseme si la explicación no es clara, se necesita contexto adicional o si la respuesta está en otro lugar en StackOverflow y estoy ciego.
Tal vez necesites esto en 2 pasos:
Algo como esto:
with selected_logs as ( select l.id as log_id from logs l join tags t on t.log_id = l.id and t.tag_name = '{{filter}}' ) select l.*, t.* from selected_logs sl join logs l on sl.log_id = l.id join tags t on t.log_id = sl.log_id