首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SEQUEL Postgres联接查询

SEQUEL Postgres联接查询
EN

Stack Overflow用户
提问于 2013-05-28 22:24:03
回答 2查看 383关注 0票数 1

我正在努力使用postgres和SEQUEL与ruby进行简单的连接查询。

我有表1(短列表),其中包含以下列: id、短名称

和表2(短成员),列: id、short_id (引用短列表的id )

我想选择短成员id和短名单短名称。因此,在常规的SQl中,它将是

代码语言:javascript
复制
SELECT shortlists.shortname, shortmembers.id WHERE shortmembers.short_id = shortlists.id

我试过了

代码语言:javascript
复制
@shortmembers = DB[:shortlists].join(:shortmembers, :id => :short_id) 

然后是拼音代码:

代码语言:javascript
复制
<option value="">Populated Shortlists ..</option>
        <% @shortmembers.each do |shortmember| %>
        <option value="<%= shortmember[:id] %>"><%= shortmember[:shortname] %></option>
        <% end %>

我收到一条错误消息,这使我认为连接查询不起作用。它是:

nil:NilClass的未定义方法‘`each’

感谢大家的帮助!

EN

回答 2

Stack Overflow用户

发布于 2013-05-29 08:23:21

我已经弄明白了。正确的查询是:

@shortmembers = DB:shortlists.distinct(:shortname).join(:shortmembers,:short_id => :id)

作为观察,顺便说一下,distinct很重要,否则每个“短名称”的例子都会重复。

问题不在于查询的构造,而在于shortlists表中的"id“列是integer类型,而shortlists表中相应的short_id列是varchar类型。Postgres对此感到不安。当我将short_id更改为"int“类型时,没有问题。

我希望这对其他人有帮助。

票数 1
EN

Stack Overflow用户

发布于 2013-05-29 00:50:35

从错误消息中可以看出,您的模板中的@shortmembersnil。根据您发布的早期代码,它应该是一个数据集。因此,该模板看起来不是在与前面代码相同的上下文/绑定中执行的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16794547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档