过滤cfquery结果

时间:2011-06-03 17:34:51

标签: sql coldfusion distinct cfquery

我正在编辑现有的代码,这就是为什么这个问题按原样形成的原因。我试图使用已存在的查询,而不通过URL添加更多表单变量。

所以我的问题:我有一个正在运行的查询,并且此查询用于填充页面上的两个下拉列表。一个列表是操作状态,另一个列表是实际操作站点。在页面的开头,我希望下拉只有查询的不同结果,目前显示120 +'AL'80 +'MN'等。另外我想要第二次下拉只有结果有特定国家作为他们的国家。

我知道我可以通过添加更多查询和表单变量来实现这一点,但我想知道是否有办法在cfquery中过滤结果。

3 个答案:

答案 0 :(得分:1)

这就是我要做的。只显示状态下拉。

使用一些示例代码会更容易,但这是一个示例。没有尝试过,但应该是一个好的开始。永远不要记得如何将选择设置回任何选择...

首先下载

<cfoutput group= "state">
<option value= "#state#">#state#</option>
</cfoutput>

第二次下拉

<cfoutput group= "state" style= "display: none;">
<select id= "#site#" class= "site">
<option>Select a Site</option>
<cfoutput>
<option value= "#site#">#site#</option>
</cfoutput>
</select>
</cfoutput>

添加一些JavaScript ......

$( "#state" ).change( function() {

$( ".site" ).each( function() {
$( this ).selected( '' ).hide();

} );

$( "select[id=" + $( this ).val() + "]" ).show();


} );

答案 1 :(得分:0)

第一个下拉列表的另一个答案上的

+1 - 只需对输出进行分组(确保查询正确排序)。

对于第二次下拉 - 使用cfselect并查看bind属性 - 您可以将其“绑定”到第一个下拉列表。

答案 2 :(得分:0)

这取决于您的特定数据库设计...(这里的MySQL示例......)但是,完全假设您有一个字段可以充当PK来定义站点位置,例如ZipCode(我我在这里使用...)你可以简单地将你的cfquery转储到一个数组中,然后循环遍历它以获得你的结果......

    <cffunction name="getDistinct" access="public" returntype="array" hint="Displays a Single Entry based on the ZipCode for this demo ...">

         <cfargument name="ZipCode" required="true" type="string" />

            <cfset var q = "">  
             <cfset var result = arrayNew(2)>
            <cfset i=0> 

            <cfquery name="q" datasource="#variables.dsn#" username="#variables.username#" password="#variables.password#">
                SELECT DISTINCT Site, SiteName, State, ZipCode
                FROM `THETABLE`
                WHERE ZipCode = <cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.ZipCode#" maxlength="10">
                ORDER BY Site ASC
            </cfquery>

                <cfloop index="i" from="1" to="#q.RecordCount#">
                <cfset result[i][1] = q.ZipCode[i]>
                <cfset result[i][2] = q.Site[i]>
            </cfloop>  

            <cfreturn >
    </cffunction>