Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Der richtige Weg, um Artikel mit filterbaren Attributen zu speichern?

Ich verwende dafür gerne Aggregation mit bedingter Aggregation. Zum Beispiel für Ihren ersten Aufzählungspunkt:

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;

Die > 0 bedeutet, dass die Attribut/Wert-Kombination existiert. Verwenden Sie = 0 um anzugeben, dass es nicht funktioniert.