計算を格納するテーブル(出席)を作成しました。計算の大部分を満たすようにテーブルを更新しています。従業員(EMP_NB)がその日に仕事を辞めた時期を把握する必要があります。これはTIMEDIFF(ADDTIME(PERIOD, '1:00'), SEC_TO_TIME(Activity_Secs))
によって計算されます。別のテーブルからのMAXベースの計算によるテーブルの更新
私の問題は、DATEごとにEMP_NBごとにMAX(PERIOD)を取得し、対応するActivity_Secを取得する方法を見つけることができないということです。
にtableAここ
╭────────┬──────┬────────┬───────────────╮ │ EMP_NB │ DATE │ Period │ Activity_Secs │ ╰────────┴──────┴────────┴───────────────╯
は、私は、従業員がログイン最初の期間を取得するために作られたMySQLのコードである。
UPDATE calc_Attendance AS att, tableA AS a
JOIN (
SELECT
EMP_NB,
DATE,
Period,
Activity_Secs
FROM tableA
GROUP BY EMP_NB, DATE, Period
) m
ON a.EMP_NB = m.EMP_NB and a.DATE = m.DATE and a.Period = m.Period
SET DEPTARTURE_ACTUAL = TIMEDIFF(ADDTIME(m.Period, '1:00'), SEC_TO_TIME(m.Activity_Secs))
WHERE att.EMP_NB = m.EMP_NB AND att.DATE = m.DATE
;
任意の助けが理解されるであろう。私はSQLで多くの経験を持っていないので、これが私を狂ってしまう。
あなたはurクエリーでActivity_Secsをグループ化していません。この列の最大値を取っておきたいですか? – Teja
DATEごとにEMP_NBごとにMAX(PERIOD)と同じ行にあるActivity_Secsが必要です。 – MikeKusold
投稿したばかりのものを試してみてください... – Teja