在MySQL中使用复杂的连接

时间:2012-10-16 12:51:17

标签: mysql join inner-join

以下是我正在使用的数据库的架构 - [编辑]

我正在尝试为2个不同的结果集提出2个不同的查询 -

  1. 销售额最高的销售代表
  2. 销售额最高的销售代表按managerId
  3. 分组

    我对第一个查询感到满意;这就是我提出的:

    SELECT
        SUM(`products`.`cost`) AS `Sale`
        , `employees`.`firstName`
    FROM
        `d2dpro`.`sales_reps`
        , `d2dpro`.`products`
        INNER JOIN `d2dpro`.`employees` 
            ON (`sales_reps`.`employeeId` = `employees`.`employeeId`)
        INNER JOIN `d2dpro`.`sold_products` 
            ON (`products`.`productId` = `sold_products`.`productId`)
        INNER JOIN `d2dpro`.`sales` 
            ON (`sold_products`.`saleId` = `sales`.`saleId`) AND (`sales`.`salesCampId` = `sales_reps`.`saleCampId`)
    GROUP BY `employees`.`firstName`;
    

    通过此查询,我遇到了这个错误: Error Code: 1054 Unknown column 'sales_reps.saleCampId' in 'on clause'

    对此查询有何帮助?还有第二个?

1 个答案:

答案 0 :(得分:0)

您正在使用一个表(sales_reps)与表employees,sold_products和sales的INNER JOIN进行CROSS JOIN。为了能够在该JOIN中引用sales_reps,您应该将其包含为内连接:( FROM子句应该如下所示)

FROM `d2dpro`.`products`
    INNER JOIN `d2dpro`.`employees` 
        ON (`sales_reps`.`employeeId` = `employees`.`employeeId`)
    INNER JOIN `d2dpro`.`sold_products` 
        ON (`products`.`productId` = `sold_products`.`productId`)
    INNER JOIN `d2dpro`.`sales` 
        ON (`sold_products`.`saleId` = `sales`.`saleId`)
    INNER JOIN `d2dpro`.`sales_reps` 
        ON (`sales`.`salesCampId` = `sales_reps`.`saleCampId`)