Coldfusion 将值列表存储在单个列中?如果是这样,帮自己一个忙:不要。数据库设计用于处理信息行,而不是列表。存储列表会导致数据完整性和性能问题。相反,使用表将选项存储在行中,这项任务可能会简单得多。为什么每次都在循环中运行相同的查询?你对这个问题的评论暗示这是不明智的。
Coldfusion 将值列表存储在单个列中?如果是这样,帮自己一个忙:不要。数据库设计用于处理信息行,而不是列表。存储列表会导致数据完整性和性能问题。相反,使用表将选项存储在行中,这项任务可能会简单得多。为什么每次都在循环中运行相同的查询?你对这个问题的评论暗示这是不明智的。,coldfusion,cfquery,cfloop,Coldfusion,Cfquery,Cfloop,将值列表存储在单个列中?如果是这样,帮自己一个忙:不要。数据库设计用于处理信息行,而不是列表。存储列表会导致数据完整性和性能问题。相反,使用表将选项存储在行中,这项任务可能会简单得多。为什么每次都在循环中运行相同的查询?你对这个问题的评论暗示这是不明智的。@DanBracuk如果我知道外部查询,我会加入他们,但我不知道。我以最直接的方式回答了他的问题。@DanBracuk这可能是也可能不是完全相同的问题,我假设他正在这个循环中的其他地方设置他们的key_id。@AdamCameron这太冒昧了。
将值列表存储在单个列中?如果是这样,帮自己一个忙:不要。数据库设计用于处理信息行,而不是列表。存储列表会导致数据完整性和性能问题。相反,使用表将选项存储在行中,这项任务可能会简单得多。为什么每次都在循环中运行相同的查询?你对这个问题的评论暗示这是不明智的。@DanBracuk如果我知道外部查询,我会加入他们,但我不知道。我以最直接的方式回答了他的问题。@DanBracuk这可能是也可能不是完全相同的问题,我假设他正在这个循环中的其他地方设置他们的key_id。@AdamCameron这太冒昧了。为什么你会认为他每次都在通过循环重置会话变量?为什么你每次都在循环中运行相同的查询?你对这个问题的评论暗示这是不明智的。@DanBracuk如果我知道外部查询,我会加入他们,但我不知道。我以最直接的方式回答了他的问题。@DanBracuk可能是也可能不是完全相同的查询,我假设他正在这个循环的其他地方设置他们的key\u id。@AdamCameron这太冒昧了。为什么你会假设他每次都在循环中重置会话变量?RE:
ListFindLocase(myquery.setup_选项,…)
另外,我要重申的是,在查询列上使用列表函数表明db表未规范化,这就是笨拙循环背后的原因。如果是这样,我强烈建议重新构造表。然后您可以使用联接,让数据库发挥其最佳功能。RE:ListFindLocase(myquery.setup_选项,…)
另外,我要重申的是,在查询列上使用列表函数表明db表没有规范化,这就是笨拙循环背后的原因。如果是这样,我强烈建议重新构造表。然后你可以使用联接,让数据库发挥它最好的作用。如果myquery.recordCount
为0。仍然需要循环,因为我们需要为每个记录的myquery.setup\u选项执行listfindnocase
。如果myquery.recordCount
为0,它将不起作用。并且仍然需要循环,因为我们需要为每个记录的myquery.setup\u选项执行listfindnocase
。
<cfloop query="myquery">
<cfif listfindnocase(myquery.setup_option,"required_information")>
<cfquery name="someRecord" dbtype="query">
select * from second_table
where key_id = '#myquery.key_id#'
</cfquery>
<cfif someRecord.recordcount eq 0>
<!--- Need something here to remove this row from returning in the query --->
</cfif>
</cfif>
</cfloop>
<cfloop query="myquery">
<cfquery name="someRecord" dbtype="query">
select * from second_table
where key_id = '#session.key_id#'
</cfquery>
<cfif someRecord.recordcount neq 0>
<!--- do what you would do when record count NOT equal to zero --->
</cfif>
</cfloop>
<cfloop query="myquery">
<cfif listfindnocase(myquery.setup_option,"required_information")>
<cfquery name="someRecord" dbtype="query">
select * from second_table
where key_id = '#myquery.key_id#'
</cfquery>
<cfif someRecord.recordcount eq 0>
<cfcontinue>
</cfif>
<!--- handle the rows you *do* want to process here --->
</cfif>
</cfloop>
// pseudocode, for brevity
newQuery = queryNew(oldQuery.columnList)
loop (oldQuery)
if the row is not wanted
continue
/if
add a row to newQuery
add the row data to newQuery
/loop
listOfRowsToExclude = someMechanismToArriveAtSaidList()
<cfquery name="newQuery" type="query">
SELECT *
FROM oldQuery
WHERE id NOT IN (listOfRowsToExclude)
ORDER BY [same clause as for oldQuery]
</cfquery>
<cfset myqueryIDs = ValueList(myquery.key_id)>
<cfif listfindnocase(myquery.setup_option,"required_information")>
<cfquery name="allRecords" dbtype="query">
select * from second_table
where key_id IN (#myqueryIDs#) <!--- Assuming numeric IDs --->
</cfquery>
</cfif>