【发布时间】:2023-03-24 02:37:01
【问题描述】:
我有一个在 Firebird SQL 数据模块中有效的查询。
我们迁移到 MySQL,我的所有查询都没有问题,除了这个。
请帮我解决这个问题。我收到一个错误:
执行失败。 “on 子句”中的未知列“part.id”
我的 Firebird 查询:
SELECT vendor.name AS "Vendor Name",
Cast(Cast(vendorparts.lastdate AS date) AS CHAR(10)) AS "Last Date",
CASE product.price
WHEN '0' THEN 'CONFIRM'
WHEN NULL THEN 'CONFIRM'
ELSE Round(product.price, 2)
end AS "D-Price",
Cast(vendorparts.lastcost AS DECIMAL(18, 2)) AS "Last Cost",
Cast(lowestcost.lowestcost AS DECIMAL(18, 2)) AS "Lowest Cost",
Cast(highestcost.highestcost AS DECIMAL(18, 2)) AS "Highest Cost",
part.num AS "Part Number",
part.description AS "Part Description"
FROM vendor,
vendorparts,
part,
product
INNER JOIN (SELECT vendorparts.partid,
Max(vendorparts.lastcost) AS Highestcost
FROM vendorparts
GROUP BY vendorparts.partid) AS highestcost
ON part.id = highestcost.partid
INNER JOIN (SELECT vendorparts.partid,
Min(vendorparts.lastcost) AS Lowestcost
FROM vendorparts
GROUP BY vendorparts.partid) AS lowestcost
ON part.id = lowestcost.partid
WHERE vendor.id = vendorparts.vendorid
AND product.partid = part.id
AND vendorparts.partid = part.id
AND vendorparts.lastcost <> 0
除了在子查询中创建的lowestcost 和highestcost 之外,所有表都在数据库中。
希望我的要求写得很清楚。但总而言之 - 我需要将这个有效的 Firebird 查询迁移到 MySQL 中。
为什么这在 Firebird 中有效,但在 MySQL 中无效?
【问题讨论】:
-
不要混合逗号连接语法和内连接语法..
-
请问您为什么要迁移到 MySQL?
-
@skafinski 我们的库存管理系统昨天刚刚更新到新版本。整个系统从 Firebird SQL 迁移到 MySQL。到目前为止,性能有了更好的提升,查询的编译速度也更快。
标签: mysql select join nested firebird