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

MySQL:एकाधिक और शर्त के साथ कई से कई संबंध

वांछित परिणाम प्राप्त करने के लिए आप अपनी वर्तमान क्वेरी को थोड़ा बदल सकते हैं:

SELECT i.id, i.name    -- OK to select name assuming id is the PK
FROM item i
LEFT JOIN relation r
    ON i.id = r.item_id
LEFT JOIN tag t
    ON t.id = r.tag_id
WHERE t.tag IN ('sport', 'leather')
GROUP BY i.id
HAVING COUNT(DISTINCT t.tag) = 2;

यह उन सभी वस्तुओं को वापस कर देगा जिनमें sport दोनों हैं और leather टैग। यह आइटम द्वारा एकत्र करके काम करता है (जैसा कि आप पहले से कर रहे थे), लेकिन फिर HAVING में जोर देकर काम करता है क्लॉज कि दो अलग-अलग मेल खाने वाले टैग हैं। चूंकि हमने WHERE . में केवल इन दो टैग्स तक ही सीमित रखा है खंड, यदि HAVING एकत्रीकरण के बाद चेक पास हो जाता है, इसका मतलब है कि आइटम एक मैच है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 1052:फ़ील्ड सूची में कॉलम 'आईडी' अस्पष्ट है

  2. डुप्लीकेट के साथ समवर्ती पंक्तियाँ जारी करना

  3. कैसे पता करें कि MySQL में UNION का उपयोग करते समय किस तालिका से परिणाम आया है

  4. com.mysql.jdbc.PacketTooBigException

  5. MySQL ने बाहरी जॉइन को छोड़ दिया जहां क्लॉज - बेजोड़ पंक्तियों को लौटाएं