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

Dotaz MySQL pro hledání více atributů a value_id

Zdá se, že musíte použít GROUP BY a HAVING klauzule.

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 */

Ujistěte se, že máte jedinečný index napříč product_id a attr_id aby to fungovalo správně (měli byste to již mít, protože by pravděpodobně nedávalo smysl, aby produkt měl více záznamů se stejným attr_id ).

Také se musíte ujistit, že unikáte ze svých hodnot pro použití ve vašem SQL, pokud ještě nejste. Tyto proměnné zde ukazuji pomocí ? což, pokud použijeme připravené příkazy, by byl způsob, jak napsat tento SQL.




  1. Porušení omezení integrity:1452 Nelze přidat nebo aktualizovat podřízený řádek:

  2. Jak se spouštějí paralelní plány – část 1

  3. ALTER TABLE DROP COLUMN se nezdařilo, protože k tomuto sloupci přistupuje jeden nebo více objektů

  4. Vložte více položek do jednoho ID MySQL ze vstupního formuláře PHP zaškrtávacího políčka