Veamos..., tengo la siguiente tablita m2m:
archivos_etiquetas
- archivo_id
- etiqueta_id
Consulta: traer los archivos que tengan las etiquetas 1 y 2.
OPCIÓN 1: Intersección
Código:
Pero por lo que veo MySQL no lo implementa! Podrá ser?(SELECT archivo_id FROM archivos_etiquetas WHERE etiqueta_id = 1) INTERSECTION (SELECT archivo_id FROM archivos_etiquetas WHERE etiqueta_id = 2)
De todas formas, con este método, habría que hacer tantas intersecciones como cantidad de etiqutas a incluir en la consulta. Como que no me gusta mucho.
OPCIÓN 2: Subconsultas
Código:
Este me gusta más, funciona, pero no se..., muchas subconsultas también.SELECT archivo_id FROM archivos_etiquetas WHERE archivo_id IN (SELECT archivo_id FROM archivos_etiquetas WHERE etiqueta_id = 1) AND archivo_id IN (SELECT archivo_id FROM archivos_etiquetas WHERE etiqueta_id = 2)
¿Alguien podria plantear alguna alternativa?
Saludos y gracias!