Mysql 如何在左连接中使用不同的WHERE子句

Mysql 如何在左连接中使用不同的WHERE子句,mysql,join,count,where-clause,group-by,Mysql,Join,Count,Where Clause,Group By,我有两个textfield,我在WHERE子句中将每个textfield值发布到MySQL查询中 $sWhere = " WHERE MONTH(Inspection_datetime) = '".$Month."' AND YEAR(Inspection_datetime) = '".$Year."' "; 然后我尝试将此查询合并为如下所示: $sQuery = "SELECT A.id,A.Line, week1.1st, we

我有两个textfield,我在WHERE子句中将每个textfield值发布到MySQL查询中

$sWhere = " WHERE MONTH(Inspection_datetime) = '".$Month."' AND 
            YEAR(Inspection_datetime) = '".$Year."' ";
然后我尝试将此查询合并为如下所示:

$sQuery = "SELECT A.id,A.Line,
                  week1.1st, week2.2nd, week3.3rd, week4.4th, week5.5th,
                  IFNULL(week1.1st,0) + IFNULL(week2.2nd,0) + IFNULL(week3.3rd,0)
                + IFNULL(week4.4th,0) + IFNULL(week5.5th,0) AS Total
           FROM inspection_report AS A
           LEFT JOIN(
                     SELECT Line, (SUM(S) + SUM(A) + SUM(B)*0.4 +
                                   SUM(C)*0.1)/COUNT(Serial_number) AS 1st
                     FROM inspection_report
                     WHERE DAY(Inspection_datetime) BETWEEN 1 AND 7
                     GROUP BY Line, WEEK(Inspection_datetime),
                                    YEAR(Inspection_datetime)
                     ) AS week1 USING (Line)

                 LEFT JOIN(
                           SELECT Line, (SUM(S) + SUM(A) + SUM(B)*0.4 + SUM(C)*0.1)/COUNT(Serial_number) AS 2nd
                           FROM inspection_report
                           WHERE DAY(Inspection_datetime) BETWEEN 8 AND 14
                           GROUP BY Line, WEEK(Inspection_datetime), YEAR(Inspection_datetime)
                           ) AS week2 USING (Line)";
.........//SAME LIKE ABOVE JUST CHANGE INTO another week's range

$sWhere = " WHERE MONTH(Inspection_datetime) = '".$Month."' AND
           YEAR(Inspection_datetime) = '".$Year."' ";

$sGroupBy = " GROUP BY A.Line ";
$sQuery.= $sWhere.$sGroupBy;
我希望它可以每周统计数据,也可以通过
$Month
$Year
进行过滤

但是我得到了错误的结果。结果每周统计所有月份和全年的数据。
如何修复它?

您需要在每个子查询中添加
其中月(检验日期时间)='''.$MONTH.''和年(检验日期时间)='.$YEAR.

您当前的查询有两个问题:

  • 您只是通过
    字段加入表,您告诉MySql要做的是查找包含月份和年份数据的行,并为这些行提取所有的每周数据
  • 您要多次(每周一次)合并和分组表,是否需要这样做?如果您可以按行获得每周结果,查询会快得多
  • 您正在为每月的每7天创建一个新的子查询,但希望在每周显示结果

  • 你想知道为什么你的查询是错误的,或者你如何得到结果?记住。实际上我想每周统计数据。然后按所选的月份和年份对它们进行排序。实际上我想在一个月内每周统计数据。所以,我使用1到7,依此类推,直到我们遇到第五周。使用cor得到正确结果的更好方法是什么直接查询?