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

Il modo corretto per conservare gli articoli con attributi filtrabili?

Mi piace usare l'aggregazione per questo con l'aggregazione condizionale. Ad esempio, per il tuo primo punto elenco:

select a.carid
from attributes a
group by a.carid
having sum( (attribute, value) in ( ('color', 'red'), ('color', 'blue') ) ) > 0 and 
       sum( (attribute, value) in ( ('wheels', '2') ) > 0;

Il > 0 significa che la combinazione attributo/valore esiste. Usa = 0 per specificare che non funziona.