查询在mysql和SUM中连接3个不同的表

时间:2015-04-12 16:32:49

标签: mysql

我有3个表,如下例所示

  1. 班主任

    • ClassMasterId(主键)
    • CLASSID
  2. ClassDetails

    • ClassMasterId(使用ClassMaster.ClassMasterId进行映射)
    • ClassSize
  3. 范围

    • ClassId(使用ClassMaster.ClassId进行映射)
    • RangeStart,RangeEnd,费用
  4. ClassDetails表将为ClassMasterId提供多条记录,例如类的多个部分。范围表中的费用由范围开始和范围结束设置。此范围适用于班级人数。需要查询才能获得特定学生每个班级的总费用。

    是否可以在MYSQL的单个查询中获取它?

1 个答案:

答案 0 :(得分:0)

SELECT 
    cm.ClassMasterId, r.RangeStart, r.RangeEnd, r.ClassSize, SUM(r.Fees) AS 'Fees'  
FROM
    ClassMaster cm
        INNER JOIN ClassDetails cd ON cd.ClassMasterId = cm.ClassMasterId
        INNER JOIN Range r ON r.ClassId = cm.ClassId
GROUP BY 
    cm.ClassMasterId, r.RangeStart, r.RangeEnd, r.ClassSize

因为这是MySql并且您的密钥具有相同的名称,所以如果您愿意,可以使用using语法进行连接:

SELECT 
    cm.ClassMasterId, r.RangeStart, r.RangeEnd, r.ClassSize, SUM(r.Fees) AS 'Fees'  
FROM
    ClassMaster cm
        INNER JOIN ClassDetails cd USING (ClassMasterId)
        INNER JOIN Range r USING (ClassId)
GROUP BY 
    cm.ClassMasterId, r.RangeStart, r.RangeEnd, r.ClassSize