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

Zapytanie MySQL do wyszukiwania wielu atrybutów i identyfikatora wartości

Wygląda na to, że musisz użyć GROUP BY i 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 */

Upewnij się, że masz unikalny indeks w product_id i attr_id aby to działało poprawnie (powinieneś już to mieć, ponieważ prawdopodobnie nie ma sensu, aby produkt miał wiele rekordów z tym samym attr_id ).

Musisz także upewnić się, że zmieniasz znaczenie swoich wartości w celu użycia ich w SQL, jeśli jeszcze tego nie zrobiłeś. Pokazuję tutaj te zmienne za pomocą ? co, jeśli użyjemy przygotowanych wyciągów, byłoby sposobem na napisanie tego kodu SQL.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zatrzymywanie ostrzeżeń MySQL w Pythonie

  2. Program C++ komunikujący się z bazą danych MySQL

  3. Najszybszy sposób na usunięcie ogromnej tabeli MySQL

  4. Używanie mysql concat() w klauzuli WHERE?

  5. ColdFusion - Wstawianie znaków arabskich/perskich do mysql