需要帮助将sql转移到续集:
SQL:
SELECT table_t.curr_id FROM table_t
INNER JOIN table_c ON table_c.curr_id = table_t.curr_id
INNER JOIN table_b ON table_b.bic = table_t.bic
WHERE table_c.alpha_id = 'XXX' AND table_b.name='Foo';
Run Code Online (Sandbox Code Playgroud)
我陷入了续集,我不知道如何过滤,到目前为止这样:
cid= table_t.select(:curr_id).
join(:table_c, :curr_id=>:curr_id).
join(:table_b, :bic=>:bic).
filter( ????? )
Run Code Online (Sandbox Code Playgroud)
比以上更好的习语答案也很受欢迎.Tnx.
更新:
我必须修改一点才能使它工作
cid = DB[:table_t].select(:table_t__curr_id).
join(:table_c, :curr_id=>:curr_id).
join(:table_b, :bic=>:table_t__bic). #add table_t or else ERROR: column table_c.bic does not exist
filter(:table_c__alpha_id => 'XXX',
:table_b__name => 'Foo')
Run Code Online (Sandbox Code Playgroud)
没有过滤器,
cid = DB[:table_t].select(:table_t__curr_id).
join(:table_c, :curr_id=>:curr_id, :alpha_id=>'XXX').
join(:table_b, :bic=>:table_t__bic, :name=>'Foo')
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我使用pgsql 9.0
这是纯粹的续集方式:
cid = DB[:table_t].select(:table_t__curr_id).
join(:table_c, :curr_id=>:curr_id).
join(:table_b, :bic=>:bic).
filter(:table_c__alpha_id => 'XXX',
:table_b__name => 'Foo')
Run Code Online (Sandbox Code Playgroud)
请注意,您也可以在没有WHERE的情况下执行此操作,因为您正在使用INNER JOIN:
cid = DB[:table_t].select(:table_t__curr_id).
join(:table_c, :curr_id=>:curr_id, :alpha_id=>'XXX').
join(:table_b, :bic=>:bic, :name=>'Foo')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3210 次 |
| 最近记录: |