1

特定のクエリの作成についてサポートが必要です。以下は私の入金テーブルの例です。empId は、'users' テーブルの主キーである 'userId' を参照する外部キーです。注:users テーブルはここには表示されていません。

  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 | 
+---------------+---------------+---------+

この場合、jobId は 2 つしかありませんが、3 つ以上ある可能性があります。

これは私が持っているクエリで、payId が 1 つしか表示されないため、修正の助けが必要です

また、電子メールはユーザーテーブルの属性であることにも注意してください

  <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>
4

2 に答える 2

3

GROUP BYクエリに句を追加するのを忘れたため、結果にレコードが 1 つしかない場合、

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
于 2013-03-20T03:18:07.470 に答える
0

預金台で

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

また、もう少しリレーショナルにすることをお勧めします。新しいテーブルに移動する必要がjobIdありますjobLocation

于 2013-03-20T03:26:15.113 に答える