簡體   English   中英

Ruby Rails ActiveRecord嵌套選擇

[英]ruby rails activerecord nested select

我有三個表/模型。

Recordings (id)
has_many :hits
has_many :tags, :through => :hits

Hits (id, recording_id, tag_id)
belongs_to :recordings
belongs_to :tags

Tags (id)
has_many :hits
has_many :recordings, :through => :hits

我需要查找所有具有作為參數傳遞的所有標簽的錄音。 例如,查找所有具有tag.id == 5,tag.id == 6和tag.id == 7的記錄。 (盡管可能是2個標簽ID或2000個標簽ID)

我試圖通過對數據庫的查詢來做到這一點,以便它快速而不是帶回一個大集合並用ruby減少它。

我認為SQL查詢需要這樣的東西:

SELECT * FROM recordings 
WHERE id IN (
  SELECT recording_id FROM hits 
  WHERE recording_id IN (
    SELECT recording_id FROM hits 
    WHERE recording_id IN (
      SELECT recording_id from hits WHERE recording_id = 5
    )
    AND tag_id = '6'
  ) 
  AND tag_id == '7'
)
Recording.joins(:tags).where(:tags => { :id => [5,6,7] })

我認為這應該有效(不過,我不確定它是否可以在:through關聯上使用)。 試試看。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM