<cfset url.qty = "61000">
<cfset url.pages = "16">
<cfquery name="getCosts" datasource="#request.DSN#">
SELECT ID, publication,pages,quantity, cover, cost, run_ons,run_backs, stock
FROM calculator_data
WHERE publication = <cfqueryparam cfsqltype="cf_sql_varchar" value="#url.publication#">
<cfif url.qty IS NOT "">
AND quantity = <cfqueryparam cfsqltype="cf_sql_integer" value="#url.qty#">
</cfif>
<cfif url.pages IS NOT "">
AND pages = <cfqueryparam cfsqltype="cf_sql_integer" value="#url.pages#">
</cfif>
</cfquery>
我想做的是传递一个说法
61000,然后检索最接近的值,这样我就可以通过coldfusion进行一些额外的计算。
我在数据库中的范围每10,000个左右存在,所以当我使用上面的代码进行查询时,所有我回来的都是一个空的查询对象。
理想情况下,如果我查询它 61,000我希望得到60,000,然后我可以用它作为我的基础进行额外的计算
关于如何获得最接近我要查询的值的数字的任何想法?
提前致谢
答案 0 :(得分:3)
我对ColdFusion一无所知,但我认为这应该有效。我无法理解应该匹配哪个列61000。所以我将 qty 作为示例列名。只需使用您的真实专栏而不是数量
SELECT TOP 1 * FROM [calculator_data]
Where qty < 61000
ORDER BY qty Desc
答案 1 :(得分:0)
试试这个:
<cfset url.qty = "61000">
<cfset url.pages = "16">
<cfquery name="getCosts" datasource="#request.DSN#">
SELECT ID, publication,pages,quantity, cover, cost, run_ons,run_backs, stock
FROM calculator_data
WHERE publication = <cfqueryparam cfsqltype="cf_sql_varchar" value="#url.publication#">
<cfif url.qty IS NOT "">
AND quantity < <cfqueryparam cfsqltype="cf_sql_integer" value="#url.qty#">
</cfif>
<cfif url.pages IS NOT "">
AND pages = <cfqueryparam cfsqltype="cf_sql_integer" value="#url.pages#">
</cfif>
</cfquery>
以下行已更改:
AND quantity < <cfqueryparam cfsqltype="cf_sql_integer" value="#url.qty#">