2012-04-23 107 views
-1

排除行我有2種型號:從其他表

Subscriber 
    - id 
    - name:string 
    - email:string 

Submission 
    - id 
    - name:string 
    - email:string 
    - path:string 
    - ip:string 

他們沒有任何關係。

我想從訂閱者中選擇所有行,並排除在提交表中插入電子郵件地址的行,其中url等於'some/path'。

用Rails做到這一點最優雅的方法是什麼?

回答

1

我真的不得到你的意思有:其中URL等於「一些/路徑」 不過,我想你可以添加作爲額外條件......

,如果你有一個正常的嵌套查詢解決問題你:

SELECT * 
FROM subscribers 
WHERE email NOT IN (Select email FROM Submission) 

所以在活動記錄,這將是:

subscribers.all(:conditions => ["email NOT IN (SELECT email from Submission)"]) 

如果你不喜歡寫一個嵌套select查詢,你也可以做:

emails = Submission.all 
subscribers.all(:conditions => ["email not in (?)", emails]) 

我沒有測試它,但它應該是沿着這些線的東西。

+1

對於性能方面的使用'不存在'而不是'不在' – Vik 2012-04-23 13:11:30