Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przechowywać produkty z atrybutami, które można filtrować?

Lubię używać do tego agregacji z agregacją warunkową. Na przykład dla pierwszego punktu:

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 oznacza, że ​​istnieje kombinacja atrybut/wartość. Użyj = 0 aby określić, że to nie działa.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wartość NIE JEST NULL w inicjatorze kodu

  2. sprzężenie wewnętrzne i gdzie wydajność klauzuli in()?

  3. Wyrażenie mysql NOW() w Doctrine QueryBuilder

  4. MySql - uzyskaj pozostałe dni

  5. Jak uzyskać liczbę dni w miesiącu w MySQL?