sql >> Database teknologi >  >> RDS >> Mysql

Få alle indlæg, der har et specifikt tag, og behold alle andre tags på resultater med SQL

Jeg går ud fra, at du gerne vil sende to anmodninger til databasen.

Først skal du hente alle indlæg for et givet 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)

For det andet vil du gerne tagge, som er linket til den, du leder efter, via indlæg:

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
)


  1. Mærkeligt problem med mysqli_stmt_bind_result

  2. Server tager lang tid at svare

  3. Hvordan løser man dette i Mysql (#1242 - Underforespørgsel returnerer mere end 1 række)?

  4. SQL Server Delete Statement:Sådan fjerner du en eller multiplicerer rækker fra tabellen