Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 其中(..和…)搜索同一属性的两个值_Sql_Ruby On Rails_Activerecord - Fatal编程技术网

Sql 其中(..和…)搜索同一属性的两个值

Sql 其中(..和…)搜索同一属性的两个值,sql,ruby-on-rails,activerecord,Sql,Ruby On Rails,Activerecord,我试过了 @users = User.where(name: @request.requester or @request.regional_sales_mgr) 及 这似乎不起作用。我想要的是找到名称与@request.requester匹配的用户和名称与@request.regional_sales_mgr匹配的用户,并将它们都保存到变量@users中 您想在子句中使用SQL。Activerecord提供了此操作的快捷方式: @users = User.where(name: [@requ

我试过了

@users = User.where(name: @request.requester or @request.regional_sales_mgr)


这似乎不起作用。我想要的是找到名称与@request.requester匹配的用户和名称与@request.regional_sales_mgr匹配的用户,并将它们都保存到变量@users中

您想在子句中使用SQL
。Activerecord提供了此操作的快捷方式:

@users = User.where(name: [@request.requester, @request.regional_sales_mgr]).all
名称:
提供一个值数组将生成以下SQL语句:

SELECT * FROM users WHERE name IN (value1, value2, and so on...);
这应该可以找到名称为
@request.requester
@request.regional_sales_mgr

的所有用户。在一般情况下,“或”查询可以写成:

User.where("users.name = ? OR users.name = ?", request.requester, request.regional_sales_mgr)
注意:Rails 5将支持
使用:

User.where(name: request.requester).or(User.where(name: request.regional_sales_mgr))
对于此特定情况,作为其他答案中的状态,in查询更简单:

User.where(name: [request.requester, request.regional_sales_mgr])

Diego的回答应该可以解决Sabrams的问题,而不必使用rails 4.x中的all(查询名为x或y的用户)

对于那些像我一样找到这篇文章的人,实际上是在寻找一个rails all,你可以链接where's。例如,通过联接表仅获取同时具备这两种技能的用户。(这将返回同时具有x和y技能的用户,而不会返回仅具有x技能的用户)


您应该使用更明确的
“users.name=?或users.name=?”
,以便在联接表也有
name
列的情况下联接不会中断。或者按照@diego.greyrobot的建议使用
.where
。以下查询:
SELECT*FROM users where name IN(value1、value2、value3)
与此相同:
从name=value1或name=value2或name=value3的用户中选择*,因此这并不能回答问题@sabrams需要SQL子句

User.where(name: [request.requester, request.regional_sales_mgr])
@users = User.where(name: [@request.requester, @request.regional_sales_mgr])
@users = User.joins(:skillable_joins).where(skillable_joins: { skill_id: 1 }).where(skillable_joins: { skill_id: 2 })