MySql 5.5。
仕事の割り当てを表すテーブルがあります。
empId jobNo workDate hours
4 441 10/1/2012 10
4 441 9/1/2012 22
4 441 8/1/2012 6
そして、給与を表すもの:
empId effDate rate
4 10/1/2012 6.50
4 9/1/2012 5.85
4 6/1/2012 4.00
給与は、発効日以降に実行されたすべての作業に適用されます。したがって、6 月、7 月、8 月のレートは 4.00 です。9 月は 5.85、10 月は 6.50 です。
単純に 10 月の作業をクエリすると、次のようになります。
SELECT Work.empId, Work.jobNo, Work.workDate, Work.hours, Salary.effDate, Salary.rate
FROM Work
JOIN Salary ON Work.empId = Salary.empId
WHERE Work.workDate <= '2012-10-01'
AND Salary.effDate <= Work.workDate
ORDER BY Work.jobNo ASC, Work.workDate DESC;
欲しいものが手に入らない。私は次のようなものを手に入れます
4 441 10/1/2012 10 10/1/2012 6.50
4 441 10/1/2012 10 9/1/2012 5.85
4 441 10/1/2012 10 6/1/2012 4.00
4 441 9/1/2012 22 9/1/2012 5.85
4 441 9/1/2012 22 6/1/2012 4.00
4 441 8/1/2012 6 6/1/2012 4.00
したいとき
4 441 10/1/2012 10 10/1/2012 6.50
4 441 9/1/2012 22 9/1/2012 5.85
4 441 8/1/2012 6 6/1/2012 4.00
必要なクエリを作成する方法について頭を悩ませることはできません。
実際の状況には、明らかに複数の従業員、複数の仕事があります。
ご協力いただきありがとうございます。