sql >> Database >  >> RDS >> Mysql

MySQL-query om meerdere attributen en value_id te zoeken

Het klinkt alsof je GROUP BY . moet gebruiken en HAVING clausules.

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

Zorg ervoor dat u een unieke index heeft voor product_id en attr_id om dit correct te laten werken (u zou dit al moeten hebben omdat het waarschijnlijk niet logisch is dat een product meerdere records heeft met dezelfde attr_id ).

U moet er ook voor zorgen dat u uw waarden ontwijkt voor gebruik in uw SQL, als u dat nog niet bent. Ik laat deze variabelen hier zien met ? wat, als we voorbereide verklaringen gebruiken, een manier zou zijn om deze SQL te schrijven.




  1. Een een-op-veel-relatie toevoegen aan een zelfverwijzende ouder/kind

  2. Wat doet SUBSIDIEGEBRUIK OP SCHEMA precies?

  3. Entity Framework 6 voor MySql (C#) inschakelen in WinForms van Microsoft Visual Studio 2013

  4. Hoe maak ik verbinding met een SQL Server 2008-database met behulp van JDBC?