需要SQL和Sequel方面的帮助,包括内部连接和where/filter
需要帮助将sql传输到sequel:需要SQL和Sequel方面的帮助,包括内部连接和where/filter,sql,ruby,sequel,Sql,Ruby,Sequel,需要帮助将sql传输到sequel: SQL: 我被困在续集中,我不知道如何过滤,到目前为止是这样的: cid= table_t.select(:curr_id). join(:table_c, :curr_id=>:curr_id). join(:table_b, :bic=>:bic). filter( ????? ) 用比上面更好的成语回答也很受欢
SQL:
我被困在续集中,我不知道如何过滤,到目前为止是这样的:
cid= table_t.select(:curr_id).
join(:table_c, :curr_id=>:curr_id).
join(:table_b, :bic=>:bic).
filter( ????? )
用比上面更好的成语回答也很受欢迎
更新:
我必须稍微修改一下才能使它工作
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')
没有过滤器
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')
顺便说一句,我使用的是pgsql 9.0,我想您可以随时使用
.filter('table_c.alpha_id = ? AND table_b.name = ?', 'XXX', 'Foo')
要记住的一点是,Sequel非常乐意让您使用原始SQL。如果您发现在SQL继续运行时更容易表达查询,请确保对其进行注释,以便以后可以找到它。然后你可以回到那条线,调整它,这样它就可以利用续集的惊人之处
但是,尽量避免任何特定于特定DBM的内容,因为这样会降低可移植性,这是使用ORM生成查询的主要原因之一 这是纯粹的续集方式:
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')
请注意,由于您使用的是内部联接,因此也可以在不使用WHERE的情况下执行此操作:
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')
“SEQUEL”是一个古老的名字,现在我们称它为“SQL”:)我想他是指SQL,有些人把它称为“SEQUEL”,我不想提出新的问题,只是想知道如何使上面的最后一段代码成为SQL注入证明?
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')