php - 如何从查询中检索嵌套连接选择语句数据
问题描述
我有以下查询,但不确定如何从嵌套连接查询中检索“注释”。此左连接选择此客户的最新注释,但我不确定如何回显此数据...
LEFT JOIN (SELECT note AS latestnote, timestamp, renewalid FROM renewal_note ORDER BY timestamp DESC LIMIT 1) AS n ON n.renewalid=renewal.id
完整查询:
SELECT renewal.id AS rid, renewal.personid, renewal.enddate, renewal.assettype, renewal.producttype, renewal.vrm, renewal.make, renewal.model, renewal.submodel, renewal.derivative, renewal.complete, person.forename, person.surname, person.company, appointment.id AS appid, appointment.renewalid,
(SELECT COUNT(complete) FROM renewal WHERE complete=1 && enddate BETWEEN '".$month_start."' AND '".$month_end."' && dealershipid='".$dealership_id."' && assettype='U' && producttype!='CH' && complete=1) AS renewedcount
FROM renewal
LEFT JOIN person ON person.id=renewal.personid
LEFT JOIN appointment ON appointment.renewalid=renewal.id
LEFT JOIN (SELECT note AS latestnote, timestamp, renewalid FROM renewal_note ORDER BY timestamp DESC LIMIT 1) AS n ON n.renewalid=renewal.id
WHERE enddate BETWEEN '".$month_start."' AND '".$month_end."' && renewal.dealershipid='".$dealership_id."' && assettype='U' && producttype NOT LIKE '%CH%'
ORDER BY enddate ASC
以下是当前每个循环中返回的内容(工作正常),我可以正常访问;$row['COLUMNNAME']。
rid
personid
enddate
assettype
used/new
producttype
vrm
make
model
submodel
derivative
complete
forename
surname
company
appid
renewalid
renewedcount
但是我还需要能够从renewable_note(第三个左连接)中获取注释。我没有正常的内部连接问题,但我从未创建过带有子查询的查询,因此很难在 php 循环中回显这些数据。
(只是要指出,我嵌套查询的唯一原因是我只需要返回每个客户的最新注释。)
我试过 $row['latestnote'], (没有成功),我确信这绝对不是访问这些数据的方法。
有人可以指出我正确的方向吗?
更新 随着评论的更新,我尝试了一个更简化的查询(包含所有列,所以不能错过任何内容)专门针对子查询:
SELECT
*
FROM
renewal
LEFT JOIN(
SELECT
*
FROM
renewal_note
ORDER BY
TIMESTAMP
DESC
LIMIT 1
) AS n
ON
n.renewalid = renewal.id
但这仍然为renewal_note 上的每一列返回NULL。
90% 的“续订”记录在续订注释表中都有与之链接的注释,但没有显示。
更新表有唯一的主键;ID。renewal_note 表通过列名链接:renewalid。
解决方案
我想我已经猜到了。
感谢评论者:)
纯粹为其他有类似问题/问题的人发布此信息。
要从 LEFT JOIN(SELECT... 语句中获取数据;将别名包含到外部 SELECT 语句中。然后您可以正常使用 $row['columnname']。
子查询上的 LIMIT 1 只返回了整个查询的 1 条记录。删除 LIMIT 1 以显示依赖于主查询“链接”的子查询的所有结果。
根据我的测试, ORDER BY 似乎正在工作,但不确定这是否是侥幸,或者它是否只是按主键自然排序;ID
推荐阅读
- jquery - jQuery用换行符替换所有连字符
- java - 从 JAVA 客户端到 Remedy Helix 的连接超时
- python-3.6 - 使用qpython和python3.6查询kdb
- python - Dask Distributed:如何从集群中删除上传的文件
- c# - C# UIAutomation 使 Excel 崩溃
- django - 嵌套在单独的 Django 模型表中等效的 for 循环字符串
- python - 通过 Python rdflib 访问海龟(.ttl)文件中的文件
- reactjs - PDFTron设置,我必须在哪里复制公共目录
- php - mpdf 使用 while 打印包含内部和外部数据的表格
- scala - PostgreSQL 普通 sql 查询转换为 Slick Scala 查询