sql >> Base de Datos >  >> RDS >> Mysql

Consulta MySQL para buscar múltiples atributos y value_id

Parece que necesitas usar GROUP BY y HAVING cláusulas.

SELECT
    `product_id`,
    COUNT (`primary_key_id`) AS `attr_count` /* primary key field here */
FROM `products_attr_val`
WHERE
   (`attr_id` = ? AND `value_id` = ?)
   OR (`attr_id` = ? AND `value_id` = ?)
   /* additional as necessary
   OR (`attr_id` = ? AND `value_id` = ?)
   */
GROUP BY `product_id`
HAVING `attr_count` = ? /* value here should be equal to number of attributes you are checking for */

Asegúrese de tener un índice único en product_id y attr_id para que esto funcione correctamente (ya debería tener esto, ya que probablemente no tendría sentido que un producto tenga varios registros con el mismo attr_id ).

También debe asegurarse de que está escapando sus valores para usarlos en su SQL si aún no lo ha hecho. Estoy mostrando estas variables aquí con ? lo cual, si usa declaraciones preparadas, sería una forma de escribir este SQL.