我发现错误,当标签使用“查询”属性时,我无法嵌套cfoutput标签。我认为这暗示了我将这两个cfoutput标签输出的查询结合起来。
问题是,MySQL查询第一个cfoutput标签输出数据是将单个信息打印到表中,“child”cfoutput标签使用的是获取多条信息的查询。所以我不知道我是怎么做到的。
以下是“父”cfoutput标记输出的查询:
SELECT DISTINCT s.id AS id,
s.heading AS heading,
s.reasonForSale AS reason,
s.viewing AS viewing,
s.additionalInfo AS additional,
s.contents AS content,
a.id AS auctioneer_id,
a.name AS auctioneer,
a.website AS website,
d.startDate AS start_date,
d.endDate AS end_date,
d.startTimeHours AS start_hour,
d.startTimeMins AS start_min,
d.startTimeType AS start_time_type,
d.endTimeHours AS end_hour,
d.endTimeMins AS end_min,
d.endTimeType AS end_time_type,
l.address AS address,
l.city AS city,
l.county AS county,
l.postcode AS postcode,
t.entryCopy AS sale_type,
f.filename AS logo_file,
s.featuredAuction AS featured,
s.sale_of_week AS sow,
s.brochure,
s.auctioneerslink
FROM sales s,
auctioneers a LEFT JOIN files f ON f.id = a.logoFile,
saledates d,
saleloc l,
lookupcopy t
WHERE a.id = s.auctioneer AND
d.saleId = s.id AND
t.id = s.saleType AND
l.id = d.saleLoc AND
d.id = #tmp_id#
GROUP BY id
这是我的新查询,这将获得几条信息,一系列的东西,我需要在打印时循环。它们是图像文件名,需要包装在图像标签等中......
SELECT file_name
FROM sales_photos
WHERE sale_id = #tmp_id#
ORDER BY id
如果我无法嵌套这两个cfoutput标签,我该怎么做?
感谢。
答案 0 :(得分:2)
不要忘记只有CFOUTPUT
才能获得该特定错误。并且可以使用CFLOOP
循环遍历记录集。实际上,如果一个循环使用CFLOOP
更有意义,而不是仅仅输出一个值。循环遍历记录集时CFLOOP
唯一的缺点是它不支持分组属性(这个遗漏已经用Adobe提出 - http://cfbugs.adobe.com/cfbugreport/flexbugui/cfbugtracker/main.html#bugId=83513 - 但它并没有得到太大的牵引力,但它没有听起来这对你的要求来说是一个问题。
答案 1 :(得分:1)
ColdFusion是正确的;您无法在另一个cfoutput(带有查询属性)中嵌入带有查询属性的cfoutput。
然而,您可以启动查询输出,然后在其中...嵌入一个新查询,并循环遍历这些结果(已经在cfoutput的上下文中) - 只要您注意范围您正在访问的查询名称和列(以及哪一行) - la数组索引语法规则。
对于这个答案,假设您的第一个查询(巨型查询)包含在名为“parent”的cfquery中:
<cfoutput query="parent">
<cfset file_name_qry = getFileNameFromID(parent.id[parent.currentrow]) />
#parent.heading[parent.currentrow]#
<cfloop from="1" to="#file_name_qry.recordcount#" index="i">
#file_name_qry.file_name[i]#<br/>
</cfloop>
</cfoutput>
<cffunction name="getFileNameFromID" returntype="query">
<cfargument name="id" type="string" />
<cfset var tmpQry = '' />
<cfquery name="tmpQry" datasource="mydsn">
SELECT file_name
FROM sales_photos
WHERE sale_id = #arguments.id#
ORDER BY id
</cfquery>
<cfreturn tmpQry />
</cffunction>
请注意输出中对查询名称的引用。
另请注意,为方便起见,我将第二个查询包含在函数中;你不需要这样做 - 你可以自由地在cfoutput中注入cfquery。
当然,真正的答案是重新编写SQL查询,以便它连接到必要的file_name属性,然后使用具有组属性的查询......但是我将它从这个答案中删除,因为它更复杂,并且需要更高级SQL的知识以及组属性的工作方式。
这个答案对你有用,但是ColdFusion社区很可能会让你在循环中循环 - 现在,它会解决你的问题,你可以稍后调查group属性和更高级的SQL语句