sql >> Databáze >  >> RDS >> Mysql

Správný způsob ukládání položek s filtrovatelnými atributy?

Rád k tomu používám agregaci s podmíněnou agregací. Například pro vaši první odrážku:

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;

> 0 znamená, že kombinace atribut/hodnota existuje. Použijte = 0 upřesnit, že to nefunguje.




  1. Uložená procedura nebo funkce očekává parametr, který není zadán

  2. Cizí klíč MySQL ON DELETE CASCADE přes 3 tabulky

  3. Vyberte data s maximálním datem pořadí podle jiného pole

  4. Data MySQL obsahují speciální znaky jako š a ć, ale zobrazují se jako '?' na webové stránce. Proč?