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

मेल खाने वाले टैग वाले सभी प्रोजेक्ट चुनें

निम्न में से किसी भी मामले में, यदि आप PROJECT.num नहीं जानते हैं /PROJECT_TO_TAGS.project_id , आपको PROJECTS . में शामिल होना होगा तालिका आईडी मान प्राप्त करने के लिए यह पता लगाने के लिए कि यह कौन से टैग से जुड़ा है।

IN का उपयोग करना

SELECT p.*
  FROM PROJECTS p
  JOIN PROJECTS_TO_TAGS pt ON pt.project_id = p.num
 WHERE pt.tag_id IN (SELECT x.tag_id
                       FROM PROJECTS_TO_TAGS x
                      WHERE x.project_id = 4)

EXISTS का उपयोग करना

SELECT p.*
  FROM PROJECTS p
  JOIN PROJECTS_TO_TAGS pt ON pt.project_id = p.num
 WHERE EXISTS (SELECT NULL
                 FROM PROJECTS_TO_TAGS x
                WHERE x.project_id = 4
                  AND x.tag_id = pt.tag_id)

जॉइन का उपयोग करना (यह सबसे कुशल है!)

DISTINCT यह आवश्यक है क्योंकि जॉइन परिणामसेट में डुप्लीकेट डेटा के आने का जोखिम उठाते हैं...

SELECT DISTINCT p.*
  FROM PROJECTS p
  JOIN PROJECTS_TO_TAGS pt ON pt.project_id = p.num
  JOIN PROJECTS_TO_TAGS x ON x.tag_id = pt.tag_id
                         AND x.project_id = 4


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP और MySQL में रेटिंग सिस्टम

  2. PHP एसक्यूएल एसटीएमटी एकाधिक पसंद का चयन करें? क्या यह संभव है?

  3. मेरा पीडीओ स्टेटमेंट काम नहीं करता

  4. SQL क्वेरी यह जांचने के लिए कि क्या कोई नाम स्वर के साथ शुरू और समाप्त होता है

  5. MySQL कॉलम के रूप में एकाधिक पंक्तियों में शामिल हों