Mysql
 sql >> база данни >  >> RDS >> Mysql

Mysql заявка за отношение много към много. Как да получите всички тагове на филтрирани публикации?

Е, това е най-доброто, за което се сещам в 4:30 сутринта:

SELECT distinct tag_id FROM
    (SELECT pt1.post_id FROM pt1
    INNER JOIN tags t1 ON (pt1.tag_id = t1.id)
    WHERE t1.id IN (1, 2)
    GROUP BY pt1.post_id
    HAVING COUNT(DISTINCT t1.id) = 2) MatchingPosts
INNER JOIN pt2 ON (MatchingPosts.post_id = pt2.post_id)
WHERE (pt2.tag_id NOT IN (1, 2))

(1, 2) са етикетите, които търсите и броят, разбира се, ще трябва да съответства на количеството маркери, които използвате за филтриране.

Ето един пример (Забележете, че леко промених данните)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свързване с mysql в xampp без парола

  2. couchdb срещу скоростта на mysql

  3. намиране на стойности без разлика на малки и големи с емотикони

  4. Как мога да получа достъп до командния ред на MySQL с XAMPP за Windows?

  5. Промяна на паролата за root на MySQL