私はSQLコードで2つのことをしようとしています。別のテーブル(work-table)にある別の列(時間)からデータをコピーし、それを別のテーブル(Employee-table)の新しい列(numHours)に配置します。しかし、各従業員ID(eid)の作業時間の合計を使用して、その合計を新しい列に配置する必要があります。sum()を使用してテーブルの列を更新
これは私が書いたものですが、2つのことが間違っています。 select文を実行すると、すべての従業員IDに同じ数の労働時間が割り当てられます。私は全体のステートメントを実行すると、私はこのエラーを取得する
サブクエリは複数の値を返しました。 =、!=、<、< =、>、> =、またはサブクエリが式として使用されている場合は、これは許可されません。 ステートメントが終了しました。
UPDATE Employee
SET numHours= (SELECT sum(w.hours) AS totalHours From works w, Employee e WHERE
numHours IS NULL AND e.eid = w.eid Group by w.eid);
これらは私のテーブル
CREATE TABLE Employee(
eid INT,
ename VARCHAR(30),
age INT,
salary INT,
CONSTRAINT Pk_key_eid PRIMARY KEY (eid)
);
CREATE TABLE Department(
did INT,
dname VARCHAR(30),
budget int,
managerid INT,
CONSTRAINT Validate_managerid CHECK(managerid < 1000),
CONSTRAINT Pk_key_did PRIMARY KEY (did)
);
CREATE TABLE Works(
eid INT,
did INT,
hours INT,
CONSTRAINT fk_key_eid FOREIGN KEY (eid) REFERENCES Employee (eid) ON DELETE CASCADE,
CONSTRAINT fk_key_Did FOREIGN KEY (did) REFERENCES Department (did) ON DELETE CASCADE
);
どのように私はこれを適切にコーディングしていますか?
ご使用のデータベースで質問にタグを付けてください。 –