如何在ColdFusion中将循环转换为数组以删除重复项?
我是一名ColdFusion新手,我尝试使用-tag中的group属性从下面的脚本输出中删除重复项,但不知何故,这不起作用:如何在ColdFusion中将循环转换为数组以删除重复项?,coldfusion,Coldfusion,我是一名ColdFusion新手,我尝试使用-tag中的group属性从下面的脚本输出中删除重复项,但不知何故,这不起作用: <cfoutput query="show_books" group="titleno"> 但不幸的是,这也不起作用 所以我想现在,我需要将下面的循环转换为数组或列表,将第一次搜索的结果写入数组/列表,对其排序,然后删除重复项,并从该数组/列表中进行最终输出。但我不知道如何在ColdFusion中做到这一点。因此,任何帮助都是感激的 脚本来自一个展示书籍的网
<cfoutput query="show_books" group="titleno">
但不幸的是,这也不起作用
所以我想现在,我需要将下面的循环转换为数组或列表,将第一次搜索的结果写入数组/列表,对其排序,然后删除重复项,并从该数组/列表中进行最终输出。但我不知道如何在ColdFusion中做到这一点。因此,任何帮助都是感激的
脚本来自一个展示书籍的网站。打开一本书的详细信息页面时,您会在该详细信息页面的底部看到由同一作者撰写的其他书籍。问题是,它只适用于一位作者。也有两个或两个以上的作者,但只有一个,这是关键,如果他们没有一起写超过一本书。例如,我们有一个由三位作者组成的团队,他们一起写了四本不同的书,我们在输出中看到了12本书,而不是四本……:-
代码如下:
<cfloop query="title_data">
<!-- query database -->
<cfquery name="show_books" datasource="#database#" dbtype="ODBC">
select * from books, books_publisher, books_mapping
where books.ean <> '#ean#' AND
books_publisher.publisher_id = #title_data.publisher_id# AND
books_publisher.partner_id = books_mapping.adrno AND
books.titleno = books_mapping.titleno AND
(books.visibility = 1 OR books.visibility = 2 OR books.visibility = 20 OR books.visibility = 95 OR books.visibility = 102 OR books.visibility = 107)
order by books.title asc, books.ean asc
</cfquery>
<cfoutput query="show_books">
<!-- load publisher -->
<cfquery name="show_mapped" dataSource="#database#" dbtype="ODBC">
select * from books_mapping
WHERE titleno = #show_books.titleno# AND
(role = '1' OR role = '2')
order by books_mapping.ranking
</cfquery>
<cfset authorteam = #show_mapped.recordcount#>
<!-- show title data of books -->
<table>
<tr><td>
<a href="index.cfm?view=3&ean=#ean#"><img src="./covers/small/#cover#" class="shadow"></a>
</td>
<td>
<cfloop query="show_mapped">
<cfquery name="show_publisher" dataSource="#database#" dbtype="ODBC">
select *
from books_publisher
WHERE partner_id = #show_mapped.adrno#
</cfquery>
<cfloop query="show_publisher">
<cfset authorteam = authorteam -1>
<a href="index.cfm?view=6&author_id=#publisher_id#" class="authors">#publisher_prename# #publisher_surname#</a>
<cfif authorteam neq '0'>|</cfif>
</cfloop>
</cfloop>
....
</td>
</tr>
<tr><td align="right">#price_eur# EUR</td>
<td> ...
<a href="index.cfm?view=3&ean=#ean#" class="further_button">Details</a>
</td>
</tr>
</table>
</cfoutput>
</cfloop>
此外,如果有其他方法或解决办法来删除输出中的重复条目,这将对我有很大帮助。我愿意接受各种建议,只是为了让它发挥作用。如果您不需要主键值,请更改以下内容:
select * from books, books_publisher, books_mapping
为此:
select distinct justTheFieldsYouNeed
如果这样做,则保持查询的原样,并使用cfoutput的group属性来管理显示
<cfoutput query="yourQuery" group="someField">
#groupedData#
<cfoutput>
#ungroupedData#
</cfoutput>
</cfoutput>
如果不需要主键值,请更改以下内容:
select * from books, books_publisher, books_mapping
为此:
select distinct justTheFieldsYouNeed
如果这样做,则保持查询的原样,并使用cfoutput的group属性来管理显示
<cfoutput query="yourQuery" group="someField">
#groupedData#
<cfoutput>
#ungroupedData#
</cfoutput>
</cfoutput>
编辑忽略其他问题片刻a请编辑您的帖子,描述三个表之间的关系,并包括一个小数据示例。B哪些列标识作者?很难说,因为查询使用SELECT*,而不是单个列名。我强烈怀疑查询和/或筛选器不正确,或者效率较低。提供一个小数据样本和表的描述将有助于我们建议一个更有效的查询。编辑忽略其他问题片刻请编辑您的帖子以描述三个表的关系,并包括一个小数据样本。B哪些列标识作者?很难说,因为查询使用SELECT*,而不是单个列名。我强烈怀疑查询和/或筛选器不正确,或者效率较低。提供一个小的数据样本和一个表的描述将帮助我们提出一个更有效的查询。虽然一个独特的可能会有所帮助,但如果查询是错误的,它也可能掩盖一个更大的问题。我建议首先检查sql,以确定是否需要连接。尽管使用distinct可能会有所帮助,但如果查询错误,它也可能掩盖更大的问题。我建议首先检查sql,以确定是否需要连接。