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

रेल और पोस्टग्रेस्क्ल में एक से अधिक टैग के साथ टैग की गई पोस्ट कैसे खोजें?

आप इस तरह की क्वेरी लिखने के संभावित तरीकों की समीक्षा करना चाह सकते हैं इस जवाब में कई पंक्तियों में शर्तें लागू करने के लिए एक में शामिल हों . 1B, उप-क्वेरी दृष्टिकोण का उपयोग करके रेल में अपनी क्वेरी को लागू करने का एक संभावित विकल्प यहां दिया गया है...

PostTag . में किसी क्वेरी को परिभाषित करें मॉडल जो Post को पकड़ लेगा किसी दिए गए Tag . के लिए आईडी मान नाम:

# PostTag.rb
def self.post_ids_for_tag(tag_name)
  joins(:tag).where(tags: { name: tag_name }).select(:post_id)
end

Post में क्वेरी को परिभाषित करें मॉडल जो Post को पकड़ लेगा किसी दिए गए Tag . के लिए रिकॉर्ड नाम, उप-क्वेरी संरचना का उपयोग करते हुए:

# Post.rb
def self.for_tag(tag_name)
  where("id IN (#{PostTag.post_ids_for_tag(tag_name).to_sql})")
end

फिर आप इस तरह की क्वेरी का उपयोग कर सकते हैं:

Post.for_tag("basil").for_tag("tomato")


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. केवल एक तालिका कैसे बनाएं यदि यह PostgreSQL में मौजूद नहीं है

  2. स्तंभ नाम और विशिष्ट मान लौटाएं

  3. PostgreSQL 11:विभाजन पैच के लिए पैच समीक्षक

  4. आप पीजी-वादे का उपयोग करके बिना पासवर्ड वाले पोस्टग्रेज डेटाबेस से कैसे जुड़ते हैं?

  5. PostgresQL SQL:परिणामों को सरणी में परिवर्तित करना