2015-04-12 101 views
-1

我有3个表,如下面的例子查询加入3个不同的表中MySQL和SUM

  1. 班主任

    • ClassMasterId(主键)
    • CLASSID
  2. 给出
  3. ClassDetails

    • ClassMasterId(映象ClassMaster.ClassMasterId)
    • ClassSize
  4. 范围

    • CLASSID(映象ClassMaster.ClassId)
    • 的RangeStart,rangeEnd的,费

ClassDetails表将有一个以上ClassMasterId的记录,就像一个类的多个部分一样。范围表中的费用由范围开始和范围结束设置。此范围适用于班级人数。需要查询以获得特定学校每个班级的总费用金额。

是否有可能在MYSQL的单个查询中得到它?

回答

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