sql >> Databáze >  >> RDS >> PostgreSQL

Jak najít příspěvky označené více než jedním štítkem v Rails a Postgresql

Možná budete chtít zkontrolovat možné způsoby, jak napsat tento druh dotazu v této odpovědi pro použití podmínek na více řádků ve spojení . Zde je jedna z možných možností implementace vašeho dotazu v Rails pomocí 1B, přístupu poddotazů...

Definujte dotaz v PostTag model, který zachytí Post Hodnoty ID pro danou Tag jméno:

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

Definujte dotaz v Post model, který zachytí Post záznamy pro danou Tag název pomocí struktury dílčího dotazu:

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

Pak můžete použít dotaz jako tento:

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


  1. Jak povolím profiler funkcí PostgreSQL?

  2. Python - mysqlDB, výsledek sqlite jako slovník

  3. Rychlý tip MySQL:Použití funkce DAYOFWEEK

  4. Porovnání řetězců nezávislé na databázi s JPA