mySQL Having Exclusion optimisation
===

I've actually managed to get this working, but was wondering if any Guru's might be able to provide a more optimal approach:

    SELECT `cfc`.`card_face_id`
    FROM `card_face_color` AS `cfc`
    INNER JOIN `color` AS `c` ON c.color_id = cfc.color_id
    WHERE c.c_url IN ('black', 'blue')
    AND card_face_id NOT IN (
        SELECT `cfc`.`card_face_id`
        FROM `card_face_color` AS `cfc`
        INNER JOIN `color` AS `c` ON cfc.color_id = c.color_id
        WHERE c.c_url NOT IN ('black', 'blue')
    )
    GROUP BY `cfc`.`card_face_id`
    HAVING (COUNT(DISTINCT c.c_url) = 2)

Essentially I'm trying to select all card_faces that contain black and blue, but no other colors (each card_face could potentially upto 5). Tried doing it using an inner join, but this was nearly 25x slower. I'm pretty happy with my indexes, I'm just in-experienced with the Having clause.

Thanks in advance :)
Ben