2013-03-20 46 views
1

我需要帮助创建一个特定的查询,下面是我的存款表的一个例子,empId是一个外键,指的是我'用户'表的主键'userId “ 注:用户表这里没有显示使用mysql和php创建特定的查询

mysql> SELECT * FROM deposit 
    -> ; 
+------------+---------------+---------+-------------+-------------+-------------+-------+ 
| CheckId | jobId   | payRate | jobLocation | hours  | date_paid | empId | 
+------------+---------------+---------+-------------+-------------+-------------+-------+ 
|  1512 | entertainment |  12 | store1  |  10.00 | 2013-03-02 |  1 | 
|  1510 | entertainment |  12 | store1  |  8.00 | 2013-03-01 |  1 | 
|  1507 | retail  |  10 | store1  |  8.00 | 2013-03-18 |  1 | 
|  1506 | retail  |  10 | store1  |  20.00 | 2013-03-19 |  1 | 
+------------+---------------+---------+-------------+-------------+-------------+-------+ 

我要的是计算的所有时间的总和所有特定的jobId,在这种情况下,如果我做了 查询正确,将是这样的:

+---------------+---------------+---------+ 
| payID   | payRate  | hours | 
+---------------+---------------+---------+ 
| entertainment| 12   |  18 | 
|  retail | 10   |  28 | 
+---------------+---------------+---------+ 

在这种情况下,只有2个jobIds但它可能有超过2

这是查询我已经和它的只显示一个payId,所以我需要帮助修复它

还指出,电子邮件是我的用户表的属性

<table>"; 
      $query = "SELECT jobId, payRate, SUM(hours) AS 'All_Hours' 
         FROM users INNER JOIN deposit ON userId = empId 
         WHERE users.email = '" . $_SESSION['email'] ."' 
         GROUP BY jobId,payRate"; 

         if (!$result) { //if the query failed 
          echo("Error, the query could not be executed: " . 
          mysqli_error($db) . "</p>"); 
          mysqli_close($db); //close the database 
         } //by now we have made a successful query 
         while ($row = mysqli_fetch_assoc($result)){ 
         echo "<tr><td>" .$row['jobId'] . "</td> 
          <td>" .$row['payRate'] . "</td> 
          <td>" .$row['All_Hours'] . "</td> 
          </tr>"; 
         } 
       echo"</table> 

回答

3

你忘了添加在查询GROUP BY条款造成有结果只有一条记录,

SELECT jobId, payRate, SUM(hoursWorked) AS 'All_Hours' 
FROM users INNER JOIN paycheck ON userId = empId 
WHERE users.email = 'session_email_here' 
GROUP BY jobId, payRate 
+0

我编辑我的查询,现在它没有显示任何东西,有什么不对的方式我编辑? – user2189151 2013-03-20 03:35:06

+0

nvm我运行它在phpmyadmin和它的工作,但有一个语法错误在我的代码的某处 – user2189151 2013-03-20 03:45:55

0

在存款表

SELECT jobId, payRate, sum(hours) FROM deposit 
group by 1, 2 

我也建议你让它多一点的关系:jobIdjobLocation需要移动到新表