sql >> Database >  >> RDS >> Mysql

SQL:kleuren uit kleurentabel doorzoekbaar maken

U zou hier voorwaardelijke aggregaties gebruiken. Voor Rood en Blauw wil je bijvoorbeeld kaarten vinden waar

  1. beide kleuren bestaan
  2. er bestaat geen andere kleur

Dat betekent dat als ik rood en blauw voor een kaart meet, ik er 2 moet krijgen. Als ik alle kleuren tel, moet ik ook 2 krijgen (hetzelfde voor één, drie of meer kleuren.)

Gebruik dus deze zoekopdracht en verander alleen de genoemde kleuren en het aantal kleuren:

select *
from cards_data where id in
(
  select cards_id
  from con_cards_colors
  group by cards_id
  having count(case when colors_id in (select id from colors where name in ('Red','Blue')) then 1 end) = 2 -- i.e. find all
  and count(*) = 2 -- i.e. find only those and no others
);


  1. MySQL MOD() Functie – Voer een Modulo-bewerking uit in MySQL

  2. VARCHAR als externe sleutel/primaire sleutel in database goed of slecht?

  3. html verdrievoudigd in grootte door lege tags te retourneren na een mysql-query | hoe op te lossen - laravel

  4. Het MySQL DELIMITER-sleutelwoord werkt niet