php - How to write join sub query for zend framwork 3
问题描述
I have sql query
SELECT Q.*, U.userFirstName , U.userLastName, U.userPhoneNumber, U.userEmailAddress,CP.contactFirstName, CP.contactLastName,M.fkAccountManagerId
FROM sales_quote AS Q
LEFT JOIN sales_prospact_contacts AS CP ON Q.fkProspectId=CP.fkProspectIdContact AND CP.pkContactId = (SELECT pkContactId FROM sales_prospact_contacts WHERE fkProspectIdContact = CP.fkProspectIdContact ORDER BY contactOrder ASC LIMIT 1)
LEFT JOIN sales_prospect_account_manager M ON Q.fkProspectId = M.fkProspectId AND M.pkAccountManagerId = (SELECT MAX(pkAccountManagerId) FROM sales_prospect_account_manager WHERE fkProspectId= M.fkProspectId)
LEFT JOIN sales_users U ON U.pkUserId = M.fkAccountManagerId
How can convert this query to SQL Abstraction (ZF3), i wrote but it it's giving sql error on sub query.
$select = $this->DB->select();
$select -> from(['Q'=>'sales_quote']);
$select -> join(['CP'=>'sales_prospact_contacts'], "Q.fkProspectId=CP.fkProspectIdContact AND CP.pkContactId = (SELECT pkContactId FROM sales_prospact_contacts WHERE fkProspectIdContact = CP.fkProspectIdContact ORDER BY contactOrder ASC LIMIT 1)", ['contactFirstName','contactLastName'], $select::JOIN_LEFT);
$select -> join(['M'=>'sales_prospect_account_manager'], 'Q.fkProspectId = M.fkProspectId AND M.pkAccountManagerId = (SELECT MAX(pkAccountManagerId) FROM sales_prospect_account_manager WHERE fkProspectId= M.fkProspectId)', ['fkAccountManagerId'], $select::JOIN_LEFT);
$select -> join(['U'=>'sales_users'], 'U.pkUserId = M.fkAccountManagerId', ['userFirstName', 'userLastName', 'userPhoneNumber', 'userEmailAddress'], $select::JOIN_LEFT);
$statement = $this->DB->prepareStatementForSqlObject($select);
$results = $statement->execute();
解决方案
推荐阅读
- c# - React .NET 启用 CORS - 请求的资源上不存在“Access-Control-Allow-Origin”标头
- amazon-web-services - API 网关的自定义域无法设置 404
- bash - sed 命令无法替换另一个文件中的三行,没有显示错误
- python - Django:将不可迭代的对象放入 QuerySet
- python - 即使我已经满足了条件,为什么我会陷入循环?
- sql - 查询加入实验室结果
- java - 如何将firebase数据库的eventlistner的数据快照存储在字符串中
- typescript - 在 TypeScript 中扩展 DataView 会引发“构造函数 DataView 需要‘新’”
- c++ - SDL 中错误处理和清理资源的良好做法?
- javascript - if/else 与 setInterval 自动刷新和点击刷新事件 jquery?