我的任务是在两个不同的表中更新/插入一些字段。在我运行我的更新之前,我必须从我的查询中获取值并将它们放在我的值之一应该是键的结构中。我的查询如下所示:
<cfquery name="getRecords" datasource="test">
Select
s.ID
,f.USER_ID
,s.USER_NUMBER
,s.STATUS
,f.DINING
From USERS s
Left Outer Join FIELDS f ON s.ID = f.USER_ID
</cfquery>
我需要将 USER_NUMBER 用作我的结构中的键并存储上述查询中的所有其他值。我将使用此结构比较其他列表中的值,然后构建我将用于更新/插入的最终列表。我尝试了类似下面的代码,但没有成功:
这是一个使用手动查询的独立示例:
<cfset getRecords = queryNew("")>
<cfset queryAddColumn(getRecords, "ID", [1,2,3])>
<cfset queryAddColumn(getRecords, "USER_ID", ["userA","userB","userC"])>
<cfset queryAddColumn(getRecords, "STATUS", ["Active","Active","Active"])>
<cfset queryAddColumn(getRecords, "DINING", ["X","Y","Z"])>
<cfset myStruct = StructNew()>
<cfloop query="getRecords">
<cfset myStruct = [key:#USER_NUMBER#{
id:#ID#
,userid:##USER_ID
,status:#STATUS#
,dining:#DINING#
}]>
</cfloop>
如果有人可以帮助处理此代码,请告诉我。我通常使用数组,但这次由于其他一些原因我不得不使用结构。谢谢。
最佳答案
我相信您只需要将键上移一个级别,这样循环就不会覆盖值。所以尝试这样的事情:
<cfset myStruct = StructNew()>
<cfloop query="getRecords">
<cfset myStruct[getRecords.USER_ID] = {
id:getRecords.ID,
userid:getRecords.USER_ID,
status:getRecords.STATUS,
dining:getRecords.DINING
}>
</cfloop>
然后要访问变量,您可以使用类似的东西:
<cfoutput>#htmlEditFormat(myStruct[1].dining)#</cfoutput>
关于sql - 构建结构然后填充查询中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37283822/