gpt4 book ai didi

sql - Coldfusion 循环查询并仅显示一次 html 标记

转载 作者:行者123 更新时间:2023-12-04 23:53:28 25 4
gpt4 key购买 nike

我在循环 sql 查询时遇到问题,如果查询不为空,那么我必须显示一些 html 标记。问题是假设查询找到 3 个项目,它将显示 3x 文件而不是 1x。

这是我的代码:

<cfquery name="client_id" datasource="#application.dsn#">
Select borrower_id,client_id,id from contracts where borrower_id = <cfqueryparam cfsqltype="cf_sql_integer" value="#trim(url.ID)#">
</cfquery>

<cfloop query="client_id">
<cfquery name="Payment_log" datasource="#application.dsn#">
SELECT *
FROM paymentLog
WHERE contract_id = <cfqueryparam value="#client_id.id#" maxlength="36" cfsqltype="CF_SQL_BIGINT">
AND DateDelete IS NULL
ORDER BY date_log, id
</cfquery>

<cfloop query="Payment_log">

<cfquery name="payment_log_file" datasource="#application.dsn#">
SELECT file_name
FROM paymentLog_file
WHERE log_id = #Payment_log.id#
</cfquery>

<cfloop query="payment_log_file">

<cfif payment_log_file.recordCount neq 0>
<th>file name</th>
</cfif>
</cfloop>
</cfloop>
</cfloop>

这是结果

<th>file name</th>
<th>file name</th>
<th>file name</th>

这就是我想要的/需要的

<th>file name</th>

好的,所以我按照 Matt Busche 和 Dan Bracuk 的建议将我的 sql 查询更改为:

SELECT plf.log_id
FROM paymentLog pl
LEFT JOIN paymentLog_file plf ON pl.id = plf.log_id
WHERE contract_id = <cfqueryparam value="#client_id.id#" maxlength="36" cfsqltype="CF_SQL_BIGINT">
AND DateDelete IS NULL
ORDER BY plf.log_id, date_log, id

我明白了: SQL Result

这就是我得到的 Current situation

这就是我想要/需要的 This is what i need/want

最佳答案

你会想尝试比我做的更进一步,如果可能的话,将其减少到一个整体查询,但这应该让你走上正轨

将您的两个内部查询组合成一个查询,在重复的行类型上添加一个 order by 属性,然后将一个 group by 属性添加到您的 cfloop。如果你在 CF10 上?或更低你可能需要使用 cfoutput 而不是 cfloop 来使用 group 属性

<cfquery name="client_id" datasource="#application.dsn#">
Select borrower_id,client_id,id from contracts where borrower_id = <cfqueryparam cfsqltype="cf_sql_integer" value="#trim(url.ID)#">
</cfquery>

<cfloop query="client_id">
<cfquery name="Payment_log" datasource="#application.dsn#">
SELECT pl.log_id log_id
FROM paymentLog pl
INNER JOIN paymentLog_file plf ON pl.log_id = plf.log_id
WHERE contract_id = <cfqueryparam value="#client_id.id#" maxlength="36" cfsqltype="CF_SQL_BIGINT">
AND DateDelete IS NULL
ORDER BY pl.log_id, date_log, id
</cfquery>

<cfloop query="Payment_log" group="log_id">
<th>file name</th>
</cfloop>
</cfloop>

关于sql - Coldfusion 循环查询并仅显示一次 html 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43016200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com