【发布时间】:2013-12-01 07:39:20
【问题描述】:
我想做一个简单的连接。我有两张桌子:“候选人”和“笔记”。
并非所有候选人都有关于他们的注释,有些候选人有不止一个关于他们的注释。链接字段是候选表中的id 和注释表中的candidate_id。查询是:
people = candidates.where(:industry => industry).where("country = ?", country).left_outer_join(:notes, :candidate_id => :id).order(Sequel.desc(:id)).map do |row|
{
:id => row[:id],
:first => row[:first],
:last => row[:last],
:designation => row[:designation],
:company => row[:company],
:email => row[:email],
:remarks => row[:remarks],
:note => row[:note]
}
end
它工作得很好,可以从候选人表中获取所有指定的候选人,并从注释表中获取注释,但是如果有多个注释,它会重复候选人的姓名。在结果列表中,人“abc”出现两次或三次,具体取决于与该人关联的笔记数量。
我实际上并没有在 HTML 结果中打印注释,如果该人有注释,则只是一个“勾号”,如果没有注释,则为“--”。
我希望这个人的名字只出现一次。我尝试在查询中的每个可能的位置添加distinct,但没有任何区别。
有什么想法吗?
【问题讨论】:
标签: ruby postgresql sinatra sequel