6

使用 Sequel gem:

employees = DB[:prm_master__employee.identifier]
.join(:prm_master__employee_custom_fields.identifier, :employee => :employee)
.where("termination_date >= ?","06/01/2012")
.or("termination_date = NULL")
.and("employee = 'holderl'")

以上失败:

~/.rbenv/versions/1.9.3-p194/lib/ruby/gems/1.9.1/gems/sequel-3.41.0/lib/sequel/adapters/tinytds.rb:221:in `fields': TinyTds::Error: Ambiguous column name 'employee'. (Sequel::DatabaseError)

我理解错误(连接表之间的列名相同,例如员工),但不知道如何限定and语句中的员工条件,因为表使用标识符方法忽略下划线。

4

2 回答 2

14

答案是使用以下方法实际限定列名:

Sequel.qualify(:table, :column)

或等效的较短语法:

Sequel[:table][:column]

导致:

employees = DB[:prm_master__employee.identifier]
.join(:prm_master__employee_custom_fields.identifier, :employee => :employee)
.where("termination_date >= ?","06/01/2012")
.or("termination_date = NULL")
.and(Sequel.qualify(:prm_master__employee_custom_fields.identifier, :employee)  => "holderl")
于 2012-12-03T08:52:51.690 回答
0

用户别名。或者把 table_name.column_name

于 2012-12-03T08:23:48.773 回答