sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo se hace esto en mysql o rails?

Este SQL devuelve las publicaciones que contienen ambas etiquetas.

select 
  p.* 
from 
  posts p
  ,asset_tags atg1
  ,asset_tags atg2
  ,tags t1
  ,tags t2
where
  p.id = atg1.post_id
and t1.id = atg1.tag_id
and t1.tag = 'MySQL' 
and p.id = atg2.post_id
and t2.id = atg2.tag_id
and t2.tag = 'Rails'
;

En cuanto a hacerlo a través de un registro activo, una alternativa sería consultar cada una de las etiquetas y luego &las matrices resultantes para obtener la intersección de las dos.