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

डेटा मॉडल EAV . का उपयोग करके AND इसके बजाय या कॉनटेनेटर का उपयोग करके कई विशेषताओं के आधार पर उत्पादों का चयन करें

आपकी सबक्वायरी इस तरह होनी चाहिए:

SELECT
  attributes_entity.product_id
FROM
  attributes_entity INNER JOIN attributes
  ON attributes_entity.attribute_id=attributes.id
  INNER JOIN attributes_values ON
  attributes_entity.value_id=attributes_values.id 
WHERE 
  (attributes.name="Memory" AND attributes_values.value="16GB") 
  OR
  (attributes.name="Color" AND attributes_values.value="Gold")
GROUP BY
  attributes_entity.product_id
HAVING
  COUNT(DISTINCT attributes.name)=2

यह समाधान ग्रुप बाय सबक्वायरी का उपयोग करता है। आपको या का उपयोग करना होगा क्योंकि विशेषता एक ही पंक्ति पर एक ही समय में मेमोरी और रंग नहीं हो सकती है, वे दोनों सत्य हो सकते हैं लेकिन विभिन्न पंक्तियों पर हो सकते हैं। COUNT(DISTINCT विशेषताएँ.नाम) संख्या विशेषताओं की गणना करता है जो या तो रंग या मेमोरी है, यदि यह 2 है तो कम से कम 1 पंक्ति है जहां पहली शर्त सत्य है और 1 पंक्ति जहां दूसरी भी सत्य है।




  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. त्रुटि कोड:23 फ़ाइल खोलते समय संसाधनों की कमी

  3. PHP फ़ाइल कोड के कुछ भाग में प्रवेश नहीं कर सकती

  4. मैं mysql में तारीख से महीने कैसे प्राप्त करूं?

  5. एकाधिक SQL कथनों के साथ MySQL ConnectorJ