2010-09-27 58 views
0

如何使用该查询正确分组:如何正确放置GROUP BY?

$sQuery = "SELECT id,DATE(A.Inspection_datetime) AS Date, 
           A.Model, COUNT(A.Serial_number) AS Qty, 
           B.name 
         FROM inspection_report AS A 
         LEFT JOIN Employee AS B 
         ON A.NIK=B.NIK 
         GROUP BY Date, B.name".$sWhere.$sOrder.$sLimit; 

我在串联真的很新。

回答

0

至少在大多数SQL DBMS中(MySQL在此区域中有宽松规则),您同样需要GROUP BY'id'和'A.Model'。您需要GROUP BY来在WHERE子句之后和ORDER BY子句之前。因此:

$sGroupBy = " GROUP BY id, Date, A.Model, B.Name "; 
$sQuery = "SELECT id,DATE(A.Inspection_datetime) AS Date, 
          A.Model, COUNT(A.Serial_number) AS Qty, 
          B.name 
        FROM inspection_report AS A 
        LEFT JOIN Employee AS B 
        ON A.NIK=B.NIK " . 
        $sWhere.$sGroupBy.$sOrder.$sLimit; 

请注意,你必须确保有空格分开,你串联在一起的各种条款;我在$sGroupBy(和B.NIK之后)的每一端添加了一个空格,以确保该部分正常。

+0

concat的空间函数是什么?你有concat的教程网站吗?我想了解更多。 – klox 2010-09-27 04:04:46

+0

关于这些空格的关键点是确保您没有'A.NIK = B.NIKWHERE B.EmpID = 13GROUP BY id,... B.NameORDER BY DateLIMIT 10' - 其中关键字正在运行到之前令牌,导致语法错误。我没有特定的在线参考指向你 - 对不起。 – 2010-09-27 05:44:07