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

जॉइन-टेबल से फ़िल्टरिंग

JOIN समाधान:

SELECT t.*
FROM topics t
 JOIN tags_topics t1 ON (t.id = t1.topicId AND t1.tagId = 1)
 JOIN tags_topics t2 ON (t.id = t2.topicId AND t2.tagId = 2)
 JOIN tags_topics t3 ON (t.id = t3.topicId AND t3.tagId = 3)

GROUP BY समाधान:

ध्यान दें कि आपको सभी t.* . को सूचीबद्ध करने की आवश्यकता है GROUP BY . में कॉलम खंड, जब तक आप MySQL या SQLite का उपयोग नहीं करते।

SELECT t.*
FROM topics t JOIN tags_topics tt 
  ON (t.id = tt.topicId AND tt.tagId IN (1,2,3))
GROUP BY t.id, ...
HAVING COUNT(*) = 3;

सबक्वायरी समाधान:

SELECT t.*
FROM topics t
WHERE t.id = ANY (SELECT topicId FROM tags_topics tt WHERE tt.tagId = 1)
  AND t.id = ANY (SELECT topicId FROM tags_topics tt WHERE tt.tagId = 2)
  AND t.id = ANY (SELECT topicId FROM tags_topics tt WHERE tt.tagId = 3);

संशोधित GROUP BY समाधान:

GROUP BY को सरल करता है एक सबक्वेरी में खोज को अलग करके क्लॉज।

SELECT t.*
FROM topics t
WHERE t.id IN (
  SELECT tt.topicId FROM tags_topics tt 
  WHERE tt.tagId IN (1,2,3))
  GROUP BY tt.id HAVING COUNT(*) = 3
);


  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/MySQL:क्वेरी परिणामों की तरह ध्वनि हाइलाइट करें

  3. एक mySQL INSERT के साथ कमांड निष्पादन के दौरान गंभीर त्रुटि का सामना करना पड़ा

  4. रेल ऐप त्रुटि - ActiveRecord ::PendingMigrationError माइग्रेशन लंबित हैं; इस समस्या को हल करने के लिए 'रेक डीबी:माइग्रेट RAILS_ENV=Development' चलाएँ

  5. ActiveRecord जहां_इन () सरणी के साथ