Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

वांछित विशेषताओं वाले उत्पाद प्राप्त करना

2 फ़िल्टर को अलग से संभालने की आवश्यकता है, क्योंकि प्रत्येक फ़िल्टर को products_attributes_values में पूरी तरह से अलग रिकॉर्ड देखने की आवश्यकता होती है। टेबल।

SELECT * FROM products
WHERE category_id IN ('6', '7', '29', '8', '9', '36')
    AND id IN (
        SELECT product_id
        FROM products_attributes_values
        WHERE attribute_id = 2
            AND value_id = '4')
    AND id IN (
        SELECT product_id
        FROM products_attributes_values
        WHERE attribute_id = 3
            AND value_id = '11')

UAMoto से:

यह काम कर रहा है लेकिन थोड़ा धीमा है, इसलिए मैंने उपनामों में शामिल होने का उपयोग किया है जैसे एक व्यक्ति ने मुझे बताया:

"SELECT * FROM `products`
JOIN `products_attributes_values` AS pav1
ON (`pav1`.`product_id` = `products`.`id`)
JOIN `products_attributes_values` AS pav2
ON (`pav2`.`product_id` = `products`.`id`)
WHERE `category_id` IN ('6', '7', '29', '8', '9', '36')
AND (`pav1`.`attribute_id` = '2' AND `pav1`.`value_id` = '4')
AND (`pav2`.`attribute_id` = '3' AND `pav2`.`value_id` = '11')"

विशेषताओं के संयोजन के लिए अपडेट की गई क्वेरी:

SELECT * FROM products
WHERE category_id IN ('6', '7', '29', '8', '9', '36')
    AND id IN (
        SELECT product_id
        FROM products_attributes_values
        WHERE attribute_id = 2
            AND value_id IN ('4', '5'))
    AND id IN (
        SELECT product_id
        FROM products_attributes_values
        WHERE attribute_id = 3
            AND value_id IN ('11', '62'))

या

SELECT *
FROM `products`
    JOIN `products_attributes_values` AS pav1 ON (`pav1`.`product_id` = `products`.`id`)
    JOIN `products_attributes_values` AS pav2 ON (`pav2`.`product_id` = `products`.`id`)
WHERE `category_id` IN ('6', '7', '29', '8', '9', '36')
AND (`pav1`.`attribute_id` = '2' AND `pav1`.`value_id` IN ('4', '5'))
AND (`pav2`.`attribute_id` = '3' AND `pav2`.`value_id` IN ('11', '62'))



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL हमेशा यहां इंडेक्स मर्ज का उपयोग क्यों नहीं करता है?

  2. PHP स्थिरांक परिभाषित नहीं है

  3. MySQL:FK त्रुटि के साथ तालिका बनाना (150 त्रुटि)

  4. सनस्पॉट सोलर अपरिभाषित फ़ील्ड प्रकार

  5. Express.js और MySQL मॉडल + सत्यापन