gpt4 book ai didi

coldfusion - 试图将数据插入查询中的特定列和行

转载 作者:行者123 更新时间:2023-12-04 02:07:55 26 4
gpt4 key购买 nike

我有第二个查询,其中出现了列名,我想在主查询中插入数据。我已经设法将第二个查询的所有列带到主查询中,但是所有新添加的列的数据都是空的。

现在我试图遍历第一个查询并尝试找到存在的 uuid 以将特定数据插入它找到的特定 column 和特定位置row 基于 uuid 搜索。这是我目前的尝试:

<cfset lstusers = '51840915-e570-430d-9911-7247d076f6e7,5200915-g675-430d-9911-7247d076f6e7,56674915-e570-430d-9911-7247d076f6e7,2134563-e570-430d-9911-7247d076f6e7'>
<cfloop query="quserList">
<cfdump var="#quserList.uuid[currentRow]#">
<cfif ListContainsNoCase(lstusers,quserList.uuid[currentRow])>
<cfset QuerySetCell(quserList,"BUFFEREDRANGENOTES","name",quserList[uuid][currentRow])>
<cfset QuerySetCell(quserList,"BufferNotes","name2",quserList[uuid][currentRow])>
</cfif>
</cfloop>
</cfif>

但是,它在 quserList[uuid][currentRow] 行上给我一个错误,指出数据无法索引:

coldfusion.sql.QueryColumn@276249a2] ] is not indexable by 51840915-e570-430d-9911-7247d076f6e7

如果我以其他方式尝试:

quserList.uuid[currentRow]

我仍然收到错误消息,但它显示“无法转换为 int ...”。我该如何解决?

更新:

在图 1 中,我正在为所有上述第一个查询 product_types 创建列到主查询中,并基于第一个查询的用户 ID 和第二个查询的 uuid。我想根据 uuid 和 userid 匹配将数据插入正确的位置并为用户正确的行。图2是第二张表中的uuid:

在这两个查询中,您在第一部分中看到的用户 ID 很常见。这意味着下面存在相同的 usedid,告诉我们该用户已完成这些培训。现在我希望第一个查询合并到第二个查询中,以便它应该将正确的数据添加到正确的行,这让我很困惑。

SQL:

查询 #1:

SELECT ct.trainingid,
ct.userid,
ct.trainingtype,
ct.trainingstatus,
ct.trainingscore,
ct.trainingdate,
dbo.Fn_stripcharacters(ctt.product_type, '^a-z0-9') AS product_type,
ctt.product_type AS oldName
FROM clienttraining AS ct
INNER JOIN clienttraningtypes AS ctt ON ct.trainingtype = ctt.typeid
WHERE 1 = 1
AND userid IN (
'51840915-e570-430d-9911-7247d076f6e7'
, '51927ada-6370-4433-‌​8a06-30d2d076f6e7'
)
AND trainingtype IN (
SELECT typeid
FROM complaincetestlinks
WHERE pid = 1039
AND isactive = 1
AND isdeleted = 0
)

查询 2:

SELECT id,
NAME,
username,
email,
password,
first_name,
last_name,
usertyp‌​e,
block,
sendemail,
registerdate,
lastvisitdate,
activation,
params‌​,
uuid
FROM users
WHERE uuid IN (
'51840915-e570-430d-9911-7247d076f6e7'
, '51912193-6694-4ca5-‌​94c9-9f31d076f6e7'
, '51927ada-6370-4433-8a06-30d2d076f6e7'
, '51c05ad7-d1d0-4eb6-b‌​c6b-424bd076f6e7'
, 'd047adf1-a6af-891e-94a2d0b225dcd1b6'
, '2aba38f2-d7a7-0a7a-ef‌​f2be3440e3b763'
)

最佳答案

更新:

重新审视,还是觉得你把事情复杂化了?一个简单的 JOIN 应该返回所需的信息,即所有用户和完整的培训信息(如果有)。

Runnable SQLFiddle

SELECT u.id
, u.first_name
, u.last_name
, ct.trainingid
, ct.userid
, ct.trainingtype
, ct.trainingstatus
, ct.trainingscore
, ct.trainingdate
, ctt.product_type
, ctt.product_type AS oldName
FROM users u
LEFT JOIN clientTraining AS ct ON ct.UserID = u.UUID
LEFT JOIN clientTraningTypes AS ctt ON ct.trainingtype = ctt.typeid
LEFT JOIN (
SELECT typeID
FROM complainceTestLinks
WHERE parent_client_id = 1039
AND isactive = 1
AND isdeleted = 0
) ctl ON ctl.TypeID = ct.trainingType
WHERE u.uuid IN
(
'51840915-e570-430d-9911-7247d076f6e7'
, '51912193-6694-4ca5-94c9-9f31d076f6e7'
, '51927ada-6370-4433-8a06-30d2d076f6e7'
, '51c05ad7-d1d0-4eb6-bc6b-424bd076f6e7'
, 'd047adf1-a6af-891e-94a2d0b225dcd1b6'
, '2aba38f2-d7a7-0a7a-eff2be3440e3b763'
)
ORDER BY last_name, first_name, product_type
;

您希望如何在前端呈现信息是另一个问题。例如,您可以使用 <cfoutput group="...">只显示每个用户的姓名一次,并在其下方显示已完成的培训类(class)列表(见下文)。如果您需要更具体的建议,请张贴所需输出的示例

  • 史密斯,约翰
    • 类(class) 1
    • 类(class) 2
  • 艾伦,马克
    • 类(class) 2
    • 类(class) 3...

coldfusion.sql.QueryColumn@276249a2] ] is not indexable by 51840915-e570-430d-9911-7247d076f6e7

这只是意味着您引用了一个不存在的列名。通过在此处省略 uuid 周围的引号 quserList[uuid][currentRow] ,您实际上传递的是变量 value 作为列名,而不是文字字符串“UUID”。显然,查询不包含名为“51840915-e570-430d-9911-7247d076f6e7”的列。因此错误。

it says cannot convert to int

这是不言自明的。您正在尝试使用非数字值填充数字列。显然 UUID 字符串,即“51840915-e570-430d-9911-7247d076f6e7”不是整数。您使用了错误的值或需要更改列类型。

可能与你的QuerySetCell有关调用传递了错误的参数。第三个和第四个参数应该是“值”和查询“行号”。但是,您的代码传递的是“值”的硬编码字符串和 UUID 字符串,而不是一行 number

QuerySetCell(quserList,"BUFFEREDRANGENOTES","name",quserList[uuid][currentRow])

也就是说,从技术上讲,您甚至不需要该功能。只需使用关联数组符号来“设置”值,即 <cfset queryName["columnName"][currentRow] = "some value here">

<cfif ListContainsNoCase(lstusers,quserList.uuid[currentRow])>

与错误无关,而是ListContainsNoCase这里是错误的功能,因为它 searches for partial matches .要仅匹配整个元素,请使用 ListFindNoCase .

关于coldfusion - 试图将数据插入查询中的特定列和行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39066657/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com