【问题标题】:Get error on a query on a query?在查询中获取错误?
【发布时间】:2014-04-10 21:40:29
【问题描述】:

我有这个问题

<cfquery datasource="Intranet" name="getMaxstars">
    SELECT   TOP (1) WITH TIES emp_id, SUM(execoffice_status) AS total_max
    FROM     CSEReduxResponses
    GROUP BY emp_id
    ORDER BY total_max DESC
</cfquery >

<cfquery datasource="phonelist" name="getEmployees">
    SELECT first_name, last_name, emp_id
    FROM employee
</cfquery>

<!--- Query of a query join --->
<cfquery name="getEmployeeStars" dbtype="query">
    SELECT getEmployees.first_name + ' ' + getEmployees.last_name AS full_name, getMaxstars.total_max AS stars
    FROM getMaxstars, getEmployees
    WHERE getMaxstars.emp_id = getEmployees.emp_id
</cfquery>

在这个查询中,我想在 CSEReduxResonses 表中获取 emp_id 的最大值,我想得到的是输出 只有员工表有的员工的全名,还有多少星(execoffice_status) 员工有。 所以输出看起来像这样:

约翰·多伊 4

我不断收到此错误:

查询语法错误。 遇到“。不正确的选择列表,不正确的选择列,getEmployees.emp_namefirst后面不能跟'+'

C:\inetpub\wwwroot\WebServer\win\test\cse_execoffice_newsletter.cfm 出现错误:第 60 行

58 :
59: 60: 61 : SELECT getEmployees.emp_namefirst + ' ' + getEmployees.emp_namelast AS full_name, getMaxstars.total_max AS [stars] 62:从getMaxstars,getEmployees

【问题讨论】:

  • 你有没有尝试重写这部分as [stars]
  • 在哪一行出错?这是 SQL Server 的错误,而不是 QoQ 的错误,所以我认为您可能正在查看错误的代码..?
  • 您的 Query of Query 似乎没有问题,但其他问题,getEmployeesgetMaxstars。该错误表明它来自 SQLServer。如果是查询错误查询,它会说类似Query Of Queries syntax error.
  • 我已经编辑了正确的错误。
  • 为什么要为此使用 QoQ?使用 derived table 的单个 JOIN 可以解决问题,而且效率更高。

标签: sql-server coldfusion qoq


【解决方案1】:

看起来这要么是与别名连接的错误。

下面是一个示例:

<cfset myQuery = queryNew("Column_1, Column_2", "varchar, varchar")>

<cfloop index="i" from="1" to="5">
    <cfset newRow = QueryAddRow(myQuery, 1)>    
    <cfset newCell = QuerySetCell(myQuery, "Column_1", i)>
    <cfset newCell = QuerySetCell(myQuery, "Column_2", i)>
</cfloop>
<cfdump var="#myQuery#" label="myQuery">

<hr />

<cfquery name="QoQ" dbtype="query">
    SELECT
        [myQuery].[Column_1] as Column_1,
        [myQuery].[Column_2] as Column_2
    FROM [myQuery]
</cfquery>
<cfdump var="#QoQ#" label="QoQ">

<hr />

<cfquery name="QoQ_new" dbtype="query">
    SELECT
        [myQuery].[Column_1] as Column_1,
        [myQuery].[Column_2] as Column_2,
        ([myQuery].[Column_1] + ' ' + [myQuery].[Column_2]) as stars
    FROM [myQuery]
</cfquery>

<cfdump var="#QoQ_new#" label="QoQ_new">

您可以在http://cflive.net/ 上运行代码示例,发现 ColdFusion 给出了错误,但 Railo 没有。

猜猜这不会对你有用。

编辑: 根据上面 Dan 的链接,连接的 SELECT 列周围的括号会起作用:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    • 2012-08-02
    相关资源
    最近更新 更多