mysql:“在方言3中添加/减去字符串”-操作数字字段时出错?

1dkrff03  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(406)

我有一个 Service 表和a Payments table。我希望我的客户能够为一项服务支付多笔款项,但当我试图创建一个支付表单时,我无法进行支付

"ServiceA"."Cost" - SUM("Payment"."Amount")
``` `substraction` 在我的 `SELECT` 显示剩余支付金额的查询。有人告诉我 `Strings cannot be added or subtracted in dialect 3` 即使所有相关的字段都是数字,小数点的数量都是一样的。。。
你知道我做错了什么吗?
编辑:更多细节。相关表格如下: `ServiceA` ,  `ServiceB` ,  `ServiceC` ,  `ServiceD` 都有一个数字字段 `Cost` . 它们的主键实际上是外键-它们都与 `auto_increment BIGINT` 表中的字段 `For` . 这是为了给他们 `auto_incrementing` ,但不重复ID。
有一张table `PS` (代表 `Payment-Service` )用作多重关系的中间表。它有两个外键-一个来自 `Payments` 一个来自 `For` . 这使我可以选择为一项服务进行多次付款,或一次付款涵盖多项服务。
此外,每 `Service` 表中有一个引用“clients”中的客户机id的字段。
在我的 `SELECT` ,我尝试执行以下操作:

SELECT "Clients"."Name" || ': ' || "ServiceA"."Name" || ' for ' || "ServiceA"."Cost" - SUM("Payments"."Amount") AS "To-Pay", "ID-Name" AS "ID"
FROM "ServiceA"
LEFT OUTER JOIN "Clients" ON "ServiceA"."Client" = "Clients"."ID-Client"
INNER JOIN "For" ON "ServiceA"."Id-ServA" = "For"."ID"
LEFT OUTER JOIN "PS" ON "For"."ID" = "PS"."For"
LEFT OUTER JOIN "Payments" ON "PS"."Payment" = "Payments"."For"
GROUP BY "To-Pay, "ID"
HAVING "PS"."Payment" IS NULL OR**SUM("Payments"."Amount") < "ServiceA"."Cost"
UNION ALL
(like the above but with other "Service" tables)
ORDER BY "To-Pay"

这是一个下拉列表中的 `Create Payment` 形式。看起来问题的部分是粗体的。
idfiyjo8

idfiyjo81#

试着改变这个

"ServiceA"."Cost" - SUM("Payment"."Amount")

为了这个

`ServiceA`.`Cost` - SUM(`Payment`.`Amount`)

或将其转换为特定类型

CAST("ServiceA"."Cost" AS DECIMAL(12,2)) - CAST(SUM("Payment"."Amount") AS DECIMAL(12,2));

相关问题