2016-07-20 8 views
0

私は2つのテーブルを持って、「従業員」と「費用」特定のemployeeIDのテーブルの列の合計を取得し、それを別のテーブルの別の列に格納する方法はありますか?

Employeesテーブルには2つの列「社員(PK)」と「Expense_Total」

費用は2列「社員」と「費用」を持っています。 ここで注意してくださいEmployeeIDは1人の従業員が多くの経費を持つことができるようにPKではありません。私はすべての従業員の合計を見つけて、それぞれの従業員ごとに「従業員」テーブルの「Expense_Total」列に挿入したいと考えています。これを行う方法?私は以下を試しました:

  PreparedStatement ps1 = con.prepareStatement("UPDATE payroll_system.Employees emp JOIN payroll_system.Expenses exp ON emp.employeeID = exp.employeeID SET emp.Expense_Total = //I need the sum here//"); 

答えて

1

私はあなたが次のクエリを試してみていると思います。

あなたが最初の時刻を挿入した場合、あなたが経費の合計を挿入するために、このINSERTクエリを使用することができますよりも、あなたがEmployess表にレコードを持っていないことを意味:

INSERT INTO `employees`(id,expense_total) SELECT emp_id, SUM(expense) FROM expenses GROUP BY emp_id 

あなたがアップデートを実行する必要があるよりも、従業員の中に、既にデータがある場合従業員テーブルへのクエリ:

UPDATE employees emp SET emp.expense_total = (SELECT SUM(expense) FROM expenses WHERE emp_id = emp.id) 

これを試してください。

あなたがここに確認することができます:http://sqlfiddle.com/#!9/3f4d67

+0

こんにちはのHardik、おかげで非常に多く、それが何らかの理由のために働いていません。 – javaprogrammer

+0

問題は何ですか? –

0
UPDATE 
    Employees em 
    LEFT JOIN(
    SELECT 
     e.employeeID AS employeeID, 
     SUM(e.expense) AS totAmnt 
    FROM 
     Expense e 
    GROUP BY 
     e.employeeID) AS t 
    ON t.employeeID = em.employeeID 
SET 
    em.Expense_Total = IFNULL(t.totAmnt,0); 

さようなら

関連する問題