首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Coldfusion循环查询

使用Coldfusion循环查询
EN

Stack Overflow用户
提问于 2012-11-08 04:37:00
回答 2查看 158关注 0票数 1

我有一个表‘分数’,其中包含一个companyID加上一些相关的分数。companyID可以在此表中多次出现。我有另一个包含companyID和companyName的表('company')。我想要做的是查询'company‘表以获得所有的companyID,然后使用这个结果来查询’score‘表中的分数。我也需要做一些计算。我想我需要遍历第一个结果集,并将companyID值放入第二个查询中。只是不确定该怎么做。任何帮助都将不胜感激。

我知道这段代码不会工作,但它可能会让你对我想要完成的事情有一个感觉:

代码语言:javascript
复制
<cfquery name="companyIDs" datasource="myDB">
   Select companyID from company
</cfquery>

<cfloop>
 <cfquery name="companyScore" datasource="myDB">
 SELECT Round(sum(leadership)/Count(leadership)) as leadership,   
 Round(sum(communication)/Count(communication)) as communication, 
 Round(sum(fairness)/Count(fairness)) as fairness, 
 Round(sum(ethics)/Count(ethics)) as ethics, 
 Round(sum(competence)/Count(competence)) as competence 
 FROM scores 
 Where companyID = 'companyIDs.companyID'
 </cfquery>
</cfloop>

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-08 04:57:13

有更好的方法来完成你需要的东西,但我已经回答了你的问题。我对你的代码做了一些修改:

代码语言:javascript
复制
<cfloop query='companyIDs'> // add the name of your query to the cloop
 <cfquery name="companyScore" datasource="myDB">
 SELECT Round(sum(leadership)/Count(leadership)) as leadership,   
 Round(sum(communication)/Count(communication)) as communication, 
 Round(sum(fairness)/Count(fairness)) as fairness, 
 Round(sum(ethics)/Count(ethics)) as ethics, 
 Round(sum(competence)/Count(competence)) as competence 
 FROM scores 
 Where companyID = '#companyIDs.companyID#' // add ## around your output
 </cfquery>

<cfdump var='#companyScore#'>  // dump your results

</cfloop>
票数 0
EN

Stack Overflow用户

发布于 2012-11-08 04:53:49

有几种方法可以做到这一点,但下面的方法将会起作用。

代码语言:javascript
复制
<cfquery name="companyIDs" datasource="myDB">
Select companyID from company
</cfquery>

<cfloop query="companyIDs">
 <cfquery name="companyScore" datasource="myDB">
 SELECT Round(sum(leadership)/Count(leadership)) as leadership,   
 Round(sum(communication)/Count(communication)) as communication, 
 Round(sum(fairness)/Count(fairness)) as fairness, 
 Round(sum(ethics)/Count(ethics)) as ethics, 
 Round(sum(competence)/Count(competence)) as competence 
 FROM scores 
 Where companyID = #companyIDs.companyID#
 </cfquery>
</cfloop>

您也可以将两个查询连接在一起,因此您只有一个整体查询,这将是首选的方式。

代码语言:javascript
复制
<cfquery name="companyScore" datasource="myDB">
 SELECT companyID,
 Round(sum(leadership)/Count(leadership)) as leadership,   
 Round(sum(communication)/Count(communication)) as communication, 
 Round(sum(fairness)/Count(fairness)) as fairness, 
 Round(sum(ethics)/Count(ethics)) as ethics, 
 Round(sum(competence)/Count(competence)) as competence 
 FROM scores INNER JOIN company ON scores.companyID = company.companyID
 GROUP BY companyID
 </cfquery>
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13277786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档