2013-05-28 31 views
1

我正在用簡單的加入查詢使用postgres和SEQUEL與ruby掙扎。SEQUEL Postgres加入查詢

我有表1(候選名單)與列:與列編號,短名稱

和表2(shortmembers):

我想選擇shortmembers ID,short_id(到候選名單的id引用) ID和短名單短名稱。所以,在普通的SQL,這將是

SELECT shortlists.shortname, shortmembers.id WHERE shortmembers.short_id = shortlists.id 

我已經試過

@shortmembers = DB[:shortlists].join(:shortmembers, :id => :short_id) 

然後Ruby代碼:

<option value="">Populated Shortlists ..</option> 
     <% @shortmembers.each do |shortmember| %> 
     <option value="<%= shortmember[:id] %>"><%= shortmember[:shortname] %></option> 
     <% end %> 

我讓,導致我假設加入一個錯誤信息查詢不起作用。它是:

未定義的方法`每個」近親:NilClass

所有幫助感激地接受!

回答

0

從錯誤消息看來,@shortmembersnil在您的模板中。從你之前發佈的代碼中,它應該是一個數據集。所以看起來模板並不像前面的代碼那樣在相同的上下文/綁定中執行。

+0

謝謝,我意識到這一點。我只是想知道如果加入查詢是正確的。你認爲這是什麼? – user1903663

1

我已經想通了。正確的查詢是:

@shortmembers = DB [:候選清單] .distinct(:短名稱)。加入(:shortmembers,:short_id =>:ID)

作爲觀察,在傳球,不同是很重要的否則將重複每個「短名稱」示例。

問題不查詢的結構,但是,在候選清單表中的「ID」列是整數類型和相應的short_id柱,在shortmembers表,是VARCHAR類型。 Postgres對此感到不安。當我改變short_id鍵入「int」沒有問題。

我希望這可以幫助別人。