- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的 Rails 4.1 应用程序中,我正在构建一个查询,以通过多态关系(买方)的属性(名称)在我的集合(订单)中查找记录。该多态有 2 个可能的表,因此我使用 2 个 LEFT JOINS + COALESCE 来合并属性。然后尝试在 where 子句中使用 COALESCE 中的值。
我的 ActiveRecord 模型中的方法如下所示:
class Order
...
scope :join_by_buyer_name, -> { select("stock_orders.*", "COALESCE(core_customers.business_name, core_entities.name) AS buyer_name")
.joins("LEFT JOIN core_customers ON stock_orders.buyer_id = core_customers.id AND stock_orders.buyer_type='Core::Customer'")
.joins("LEFT JOIN core_entities ON stock_orders.buyer_id = core_entities.id AND stock_orders.buyer_type='Core::Entity'")
}
...
def find_by_buyer_name(term)
all.join_by_buyer_name.where("buyer_name LIKE ?", term)
end
end
当执行 ActiveRecord 查询时,它看起来像这样
SELECT stock_orders.*, COALESCE(core_customers.business_name, core_entities.name) AS buyer_name
FROM `stock_orders`
LEFT JOIN core_customers ON stock_orders.buyer_id = core_customers.id AND stock_orders.buyer_type='Core::Customer'
LEFT JOIN core_entities ON stock_orders.buyer_id = core_entities.id AND stock_orders.buyer_type='Core::Entity'
WHERE `stock_orders`.`type` IN ('Stock::SalesOrder') AND (buyer_name LIKE "blah")
直到最近这才起作用,但是我开始收到以下错误:
Mysql2::Error:“where 子句”中的未知列“buyer_name”:SELECT stock_orders.*、COALESCE
等等等
它非常适合按 COALESCE 值排序 - 即 collection.order("buyer_name asc")
,直到最近,where 查询也完美地工作......
我不确定发生了什么变化,并且在 Rails 或 Mysql 文档中看不到任何内容。你能看出这里出了什么问题吗?请帮忙!
最佳答案
您不能在从 SELECT
子句创建的 WHERE
子句中使用 ALIAS
。请改用计算列,
AND (COALESCE(core_customers.business_name, core_entities.name) LIKE "blah")
如果您想使用ALIAS
,您必须将其包装在子查询中,如下面的查询,
SELECT *
FROM
(
SELECT stock_orders.*,
COALESCE(core_customers.business_name, core_entities.name) AS buyer_name
FROM `stock_orders`
LEFT JOIN core_customers
ON stock_orders.buyer_id = core_customers.id
AND stock_orders.buyer_type='Core::Customer'
LEFT JOIN core_entities
ON stock_orders.buyer_id = core_entities.id
AND stock_orders.buyer_type='Core::Entity'
) subquery
WHERE `type` IN ('Stock::SalesOrder')
AND (buyer_name LIKE "blah")
关于Mysql2 错误 - 使用 COALESCE,where 子句中的未知列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48657041/
我正在尝试返回有关所执行搜索次数的每小时报告。我的结果不包括搜索为零的时间,我认为我的语法正确,可以使用 COALESCE。谁能看到我做错了什么?谢谢 SELECT CAST(startdatetim
众所周知,COALESCE 是一个 ANSI SQL 标准函数。它在不同的 RDBMS 中具有相同的功能(即)它返回值列表中的第一个 NOT NULL 值。 考虑以下数据设置 CREATE TABLE
## 问题## 我从这个脚本中收到错误(Postgresql 9.3.2) (在 MS SQL Server 中没问题) SELECT CASE COALESCE(my_date_field,0)
只是想看看是否有人有更好的方法来完成我所需要的。 先来个背景。我的数据库中有一个表,目前大约有 20,000 行。在表中,我们有一列用于 FirstName 和 LastName。还有一列是 Refe
我在 SO 中找不到它,并且认为在这里找到它可能是值得的,因为 oracle 文档没有指定它。 http://docs.oracle.com/cd/B28359_01/server.111/b2828
我刚刚了解了 COALESCE,我想知道是否可以在两个表之间合并整行数据?如果没有,以下散漫的最佳方法是什么? 例如,我有这两个表并假设所有列都匹配: tbl_员工 Id Name E
为什么此查询在某些情况下会产生重复项? Table_1 ID 1 2 3 Table_2 ID 1 2 4 Table_3 ID 1 3 4 询问: SELECT C
我有一张名为 table1 的表带列Gender varchar(10)和 Team numeric . create table table1 ( ID integer Gender varchar
SQL Server 2005 中是否有一个函数,如果任何参数(任何类型)为 NULL,它会返回 NULL [或 bool 值],这样我就不用编写 IF a 为 NULL 或 b 为 NULL 或 c
来自this question , a neat answer about using COALESCE简化复杂的逻辑树。我考虑了短路的问题。 例如,在大多数语言的函数中,参数都会被完全求值,然后传递
// lItems is TDataSet or TClientDataSet with lItems do begin Close; Filtered := false; Fi
我有一个包含季度值的表,我需要添加一个新列,为我提供上个季度的最后一个非空值。例如 ID | Project | Q1 | Q2 | Q3 | Q4 | Current Quarte
大家好,Stackoverflowers!我有一个正在处理的查询,我需要过滤掉 0,但它没有删除那些记录,我似乎无法弄清楚原因。 请看下面, SELECT disb_sum, pl_balance,
我是 mysql 触发器的新手。只是让我的头脑思考一些事情,以便我了解某些内容是否可能未正确编码或最有效的路线:) 我想做的是在添加数据库条目后通过提交的值连接表以创建用于全文搜索的文本字符串,因为我
我是 REDSHIFT 中 COALESCE 功能的新手。我在 mysql 和 Redshift 中运行了以下四个查询。 第一个和第二个查询在 mysql 和 redshift 中均按预期执行。但对于
首先,我想澄清一下,我已经阅读过 this问题。那里描述的问题与我的问题非常相似,但与一个错误有关,该错误已经解决。 通过在 Windows 上运行的 MySQL WorkBench 5.2.47 C
我有这两张表: users(这有一个 updated_at 列)和 user_updates(这有一个用户的外键 user_id 和一个 created_at 列) 我想为用户找到最新的用户更新,所以
我正在使用 Postgres 并有以下 SQL 语句: SELECT * FROM "osmlocal-dsd-de".t_osm_vehicle_image t WHERE t.vehicle_co
如果我有一个简单的查询 SELECT row FROM table WHERE id=my_id 如果找不到 my_id,我想要一行 NULL 而不是空行,我可以使用 coalesce COALESC
我有一个使用 COALESCE(timestamp_type::date,charachter_varying) 的查询,由于数据类型不匹配而失败: 错误:无法匹配 COALESCE 类型的日期和字符
我是一名优秀的程序员,十分优秀!