在Coldfusion中的另一个查询的cfoutput中循环查询

在Coldfusion中的另一个查询的cfoutput中循环查询,coldfusion,Coldfusion,我正试图编写一个函数,从一个产品的替代版本中查找图像——这些都是书籍,因此任何具有相同标题的产品都将通过循环遍历任何与缺少图像的产品共享标题的产品来工作 我首先运行一个查询,以获取将显示在页面上的产品。我知道这部分工作正常,所以我不关心它。当需要显示图像时,我首先检查所选产品是否有图像 如果没有可用的图像,我想对具有相同标题或完整标题的任何产品运行第二次查询,看看它们是否有可用的图像。这将是SKU.jpg,正如您在代码中看到的,如果为其中一个备用版本找到一个图像,我会将其保存到一个变量中,循环完

我正试图编写一个函数,从一个产品的替代版本中查找图像——这些都是书籍,因此任何具有相同标题的产品都将通过循环遍历任何与缺少图像的产品共享标题的产品来工作

我首先运行一个查询,以获取将显示在页面上的产品。我知道这部分工作正常,所以我不关心它。当需要显示图像时,我首先检查所选产品是否有图像

如果没有可用的图像,我想对具有相同标题或完整标题的任何产品运行第二次查询,看看它们是否有可用的图像。这将是SKU.jpg,正如您在代码中看到的,如果为其中一个备用版本找到一个图像,我会将其保存到一个变量中,循环完成后,我会显示所选的图像

如果我仍然没有找到一个产品图片,它会显示我们的默认图片不可用的图片

<cfquery name="GetProductBasicInfo" datasource="#Request.Application.DataApp.datasource#" dbtype="odbc">
    SELECT product.Title, product.FullTitle, product.SKU, product.series, product.pubdate, productmarket.binding, product.productid, productmarket.productid
    FROM Product, productmarket
    WHERE product.productid = productmarket.productid 
        AND productmarket.Binding LIKE '#FORM.formFormat#' 
        AND product.series NOT IN ('Young Adult','childrens') 
        AND product.PubDate 
            BETWEEN '<cfoutput>#DatePart("m", FORM.formDate)#</cfoutput>/01/<cfoutput>#DatePart("yyyy", FORM.formDate)#</cfoutput>' 
            AND '<cfoutput>#DatePart("m", FORM.formDate)#</cfoutput>/28/<cfoutput>#DatePart("yyyy", FORM.formDate)#</cfoutput>' 
</cfquery> 

<cfoutput query="GetProductBasicInfo">
<!-- set of CFIF statements that determine if the current product has an image. If not, the following code is executed -->
    <cfquery name="altImages" datasource="#Request.Application.DataApp.datasource#" dbtype="odbc">
        SELECT product.SKU
        FROM Product
        WHERE product.title = '#Title#' OR product.fulltitle = '#FullTitle#'
    </cfquery>
    <cfset altPic = "">
    <cfloop query="altImages">
        <cfset altPicLocation = '#application.site.PWROOT#/client/products/prodimagetmb/#altImages.sku#.jpg'>
        <cfif FileExists(ExpandPath(altPicLocation)) eq 'true'>
             <cfset altPic = altPicLocation>
        </cfif>
    </cfloop>
    <cfif altPic NEQ "">
        <img src = "#altPic#" border = "0"> </a>
    <cfelse>
        <img src = "<cfoutput>#application.site.PWROOT#</cfoutput>/client/Products/prodimagedefault/tmbdefault/defaulttmb.jpg" border="0"> </a>
    </cfif>
</cfoutput>
当我运行上述代码时,我得到一个错误响应。出于安全考虑,我不允许拥有Coldfusion管理员通行证或访问我正在开发的站点的错误日志。是的,我知道这有多愚蠢,所以我不知道我遇到了什么具体错误

编辑:错误已解决。这与我的第二个查询的格式和我已经纠正的一个打字错误有关。结果就像我担心的那样效率低下,所以我仍然希望以某种方式简化它

编辑:为每个请求添加第一个查询中的代码。Product是一个绝对庞大的表,包含我们公司销售的大约20k条产品记录,每个记录大约35-40列。Productmarket是一个关联表,包含大约40多列


第一个查询按产品类型和发布日期进行搜索,以定义页面的内容。当给定产品不存在名为SKU.jpg的图像时,会触发第二个查询;它搜索具有完全相同标题的任何其他产品,因为它是错误的产品类型,所以在第一次搜索中可能会忽略该标题。如果存在这样的产品,它会检查SKU.jpg是否存在。如果是,则将其分配给一个变量,并用它代替原始变量。

或者,有没有更有效的方法?只要我能用相同的标题检查可能的图像匹配,我就可以做一些新的工作或重写整个内容。最有可能的是,有一种更有效的方法:在第一次查询中提取所有数据,最有可能在这两个表上使用某种连接。但从您当前的代码来看,不清楚到底是哪一个。要在没有管理员的情况下获取错误,请将您的代码包装在cftry\cfcatch中,然后向自己发送cfmail错误您是否在第二次查询中缺少联接?可能不是您当前的问题,但将是一个问题。如果这是您的实际代码,那么它正在执行一个可能返回非常大的结果集的操作。正如Sergii提到的,它可能通过一个连接来完成。你能发布第一次查询的代码吗?