Phalcon ExecuteQuery 内部连接问题
Phalcon ExecuteQuery inner Join issues
这是本机 SQL 查询,在 MySql 中有效:
SELECT a.pshdQty
FROM production_stock_header a
INNER JOIN (SELECT MAX(pshdId) AS pshdId
FROM production_stock_header
WHERE pshdAuditDelete = 'N'
) b
ON a.pshdId = b.pshdId
但是,为什么在 Phalcon 中这总是错误?
$triggerSet = $this->modelsManager->executeQuery("
SELECT pshdQty
FROM ProductionStockHeader
INNER JOIN (SELECT MAX(pshdId) AS pshdId
FROM ProductionStockHeader
WHERE ProductionStockHeader.AuditDelete = 'N'
) AS b
ON ProductionStockHeader.pshdId = b.pshdId
");
Phalcon ORM 不提供编写此类 join
语句的方法。
我建议只 运行 原始 native SQL 查询你的数据库连接:
$triggerSet = $this->db->query("SELECT a.pshdQty
FROM production_stock_header a
INNER JOIN (SELECT MAX(pshdId) AS pshdId
FROM production_stock_header
WHERE pshdAuditDelete = 'N'
) b
ON a.pshdId = b.pshdId")->fetch();
$this->db
指向您在服务中注册的数据库连接。
您也可以一起删除内部连接:
$triggerSet = $this->modelsManager->executeQuery("
SELECT pshdQty
FROM ProductionStockHeader
WHERE AuditDelete = 'N'
ORDER BY pshdId DESC
LIMIT 1
");
这是本机 SQL 查询,在 MySql 中有效:
SELECT a.pshdQty
FROM production_stock_header a
INNER JOIN (SELECT MAX(pshdId) AS pshdId
FROM production_stock_header
WHERE pshdAuditDelete = 'N'
) b
ON a.pshdId = b.pshdId
但是,为什么在 Phalcon 中这总是错误?
$triggerSet = $this->modelsManager->executeQuery("
SELECT pshdQty
FROM ProductionStockHeader
INNER JOIN (SELECT MAX(pshdId) AS pshdId
FROM ProductionStockHeader
WHERE ProductionStockHeader.AuditDelete = 'N'
) AS b
ON ProductionStockHeader.pshdId = b.pshdId
");
Phalcon ORM 不提供编写此类 join
语句的方法。
我建议只 运行 原始 native SQL 查询你的数据库连接:
$triggerSet = $this->db->query("SELECT a.pshdQty
FROM production_stock_header a
INNER JOIN (SELECT MAX(pshdId) AS pshdId
FROM production_stock_header
WHERE pshdAuditDelete = 'N'
) b
ON a.pshdId = b.pshdId")->fetch();
$this->db
指向您在服务中注册的数据库连接。
您也可以一起删除内部连接:
$triggerSet = $this->modelsManager->executeQuery("
SELECT pshdQty
FROM ProductionStockHeader
WHERE AuditDelete = 'N'
ORDER BY pshdId DESC
LIMIT 1
");