Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Obtenha todas as postagens que possuem uma tag específica e mantenha todas as outras tags nos resultados com SQL


Suponho que você esteja feliz em enviar duas solicitações ao banco de dados.

Primeiro, obtenha todas as postagens de uma determinada tag:
SELECT * FROM blog_posts bp 
WHERE EXISTS (SELECT * FROM blog_tags bt INNER JOIN
               tags t ON t.id = bt.tag_id
              WHERE bp.id = bt.post_id
               AND t.tag = @SearchTag)

Em segundo lugar, você deseja tags, eu acho, vinculadas ao que você está procurando por meio de postagens:
SELECT * FROM tags t
WHERE EXISTS ( -- Here we link two tags via blog_tags
               SELECT * FROM blog_tags bt1 INNER JOIN
               blog_tags bt2 ON bt1.post_id = bt2.post_id
                     AND bt1.tag_id != bt2.tag_id INNER JOIN
               tags t ON t.id = bt1.tag_id
               WHERE t.tag = @SearchTag
                  AND t.id = bt2.tag_id
)