sql >> Database >  >> RDS >> Mysql

SQL SELECT met m:n-relatie

SELECT  u.*
FROM    (
        SELECT  user_id
        FROM    tag t
        JOIN    user_has_tag uht
        ON      uht.tag_id = t.id
        WHERE   tag_name IN ('apple', 'orange', 'banana')
        GROUP BY
                user_id
        HAVING  COUNT(*) = 3
        ) q
JOIN    user u
ON      u.id = q.user_id

Door HAVING COUNT(*) . te verwijderen , krijg je OR in plaats van AND (hoewel het niet de meest efficiënte manier zal zijn)

Door 3 te vervangen met 2 , krijg je gebruikers die precies twee van de drie tags hebben gedefinieerd.

Door = 3 te vervangen met >= 2 , krijg je gebruikers die ten minste twee of drie tags hebben gedefinieerd.



  1. php - Gebruikers in staat stellen om favoriete berichten te plaatsen

  2. UTF - 8 met JPA en Glassfish 4.0

  3. mysql query - formaat datum op output?

  4. Gegevensbestanden samenvoegen met Statistica, deel 1