mySQL子查询导致未知列错误

时间:2013-05-16 18:08:33

标签: mysql

我在数据库中有两个表。其中一个帐户列表包含各种数据点(fix_cost_summary)。第二个表包含所有账户和与交易相关的佣金(comm_table)完成的所有交易。我正在尝试运行一个查询来输出fix_cost_summary中的所有列以及来自comm_table的帐户总和。

我的子查询导致“未知列”错误。如果我的代码中有错误,请告诉我。

SELECT 
      fix_cost_summary.*,
     comm_table.Short_Name, 
     (SELECT SUM(Commissions) 
        FROM
             comm_table     
        GROUP BY 
             comm_table.Short_Name)
FROM
     fix_cost_summary,
     comm_table
WHERE 
     fix_cost_summary.Short_Name = comm_table.Short_name

2 个答案:

答案 0 :(得分:2)

假设Short_Name中的fix_cost_summary是唯一的,MySQL将允许您简单地连接表,然后对该列进行分组:

SELECT   fix_cost_summary.*, SUM(comm_table.Commissions)
FROM     fix_cost_summary JOIN comm_table USING (Short_Name)
GROUP BY Short_Name

答案 1 :(得分:0)

内联子查询将返回多于1行。解决此问题的一种方法是将其更改为派生表:

SELECT 
      f.*,
      c.Sum_Commisions
FROM
      fix_cost_summary AS f
   JOIN
      ( SELECT Short_Name,
               SUM(Commissions) AS Sum_Commisions
        FROM
               comm_table     
        GROUP BY 
               Short_Name
      ) AS c 
         ON c.Short_Name = f.Short_Name ;