gpt4 book ai didi

mysql - Coldfusion:QueryOfQueries 或添加 QueryColumn 以显示基于 DB 查询及其计算值的结果

转载 作者:行者123 更新时间:2023-11-29 02:24:05 24 4
gpt4 key购买 nike

我进行了广泛的搜索,但无法找到适用于我的任务的东西 - 我充分意识到这可能是我的搜索词没有导致结果,所以我很感激任何指向正确方向的指示。

应用服务器:Coldfusion Application Server 10 Enterprise (U13)数据库:mySQL 5社区版

任务:根据用户输入显示合适的机器列表。

用户输入某些参数,这些参数经过计算然后从 mySQL 数据库中检索。这是第 1 步,工作正常:

<cfquery name="qmodells" datasource="dproducts">
SELECT idproduct,mymodell,kw1,mymodellprice
FROM myproducts
WHERE kw1 > <cfqueryparam value="#session.something1.something2.calculatedvalueC1#"/>
AND kw2 > <cfqueryparam value="#session.something1.something2.calculatedvalueC2#"/>
ORDER BY mymodellprice ASC

检索这些值后,我可以计算这些机器的“machineruntime”(下面的简化公式)。如果计算出的运行时间在一到三个小时之间,我会显示结果。但为此,我需要数据库查询中的值:

<table class="table table-condensed">
<cfoutput query="qmodells">
<cfset machineruntime = "#2*(qmodells.kw1/(qmodells.kw2/konstantK3))^konstantK4/24#">
<cfif #TimeFormat(machineruntime, "HH:mm")# GT "01:00" AND #TimeFormat(machineruntime, "HH:mm")# LT "03:30">
<tr>
<td nowrap="">#qmodells.mymodell#</td>
<td nowrap="">#qmodells.kw1#</td>
<td nowrap="">#qmodells.machineruntime#</td>
</tr><br/>
</cfif>
</cfoutput>
</table>

我的目标是只显示运行时间超过一小时的第一台匹配机器,也可能显示接下来的两个结果。我显然可以将隐藏的 CSS 添加到这些结果之外的任何行,但是如何正确地做到这一点?

我应该重新填充查询然后输出它,还是有一种巧妙的方法来遍历结果并更优雅地执行此操作?我在第一个查询中进行的所有计算尝试都为所有机器提供了相同的运行时间,显然我做错了。

我在查询的 SELECT 部分考虑/尝试这样的事情:

#2*(qmodells.kw1/(qmodells.kw2/konstantK3))^konstantK4/24# AS machineruntime

并且还使用查询作为第二个查询的基础,如下所示:

<cfquery name="topmatch" dbtype="query">
SELECT *
FROM qmodells
WHERE machineruntime > 0.0416666666667

感谢您提供的任何帮助!

最佳答案

您在上面使用 qmodells.kw2 的计算尝试将获取查询的唯一第一行,因为它不在循环中。以下是我对您正在尝试做的想法的猜测。

首先像上面那样运行您的 qModells 查询,但让我们添加一行作为占位符:

<Cfquery ...>
SELECT idproduct,mymodell,kw1,kw2,mymodellprice, 0.0 AS machineruntime
FROM myproducts
WHERE kw1 > <cfqueryparam value="#session.something1.something2.calculatedvalueC1#"/>
AND kw2 > <cfqueryparam value="#session.something1.something2.calculatedvalueC2#"/>
ORDER BY mymodellprice ASC
</cfquery>

请注意,我也将 kw2 添加到列列表中,因为我没有看到它的来源 - 但它在逻辑上似乎是查询的一部分(因为 k1 在列列表中)。

接下来循环查询,计算并设置机器运行时间。

<cfloop query="#qmodels#">

<cfset mymachineruntime = 2*(kw1/(kw2/konstantK3))^konstantK4/24 />
<cfset querysetcell(qmodels,'machineruntime',mymachineruntime,currentrow)/>
</cfloop>

最后,使用 q of a q,选择与您要查找的值匹配的记录:

<cfquery name="topmatch" dbtype="query">
SELECT *
FROM qmodells
WHERE machineruntime > 0.0416666666667
</cfquery>

认为这与您在上面尝试的很接近。你只需要一个循环。


注意 - 这可能是存储过程或查询中一些聪明的数据库代码的好地方。数据库可能能够生成此值并直接为您返回。希望这对您有所帮助!


编辑注意:正如 Dan 所指出的,当您尝试通过 Q 的 Q 进行选择时,空字符串可能会给您带来问题(它可能导致选择 AlphaNum 而不仅仅是 Num 选择)。所以我更改了查询以使用数字 (0)。

关于mysql - Coldfusion:QueryOfQueries 或添加 QueryColumn 以显示基于 DB 查询及其计算值的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26403421/

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