[英]Virtual column referencing another table
我有一張工作日表,那天工作的人 (M:N) 和工作日表,屬性 =“那天工作的人數”。
我想在 M:N 表中計算具有相同工作日 ID 的所有行,並將該計數寫在工作日表中,因為有多少人像生成的列一樣工作。
我怎么做?
我試過這樣的事情......
alter table WORKDAY
add NUM_OF_EMPLOYEES NUMBER(3) GENERATED ALWAYS AS
(COUNT(*) FROM WORKDAY_EMPLOYEES WHERE WORKDAY_EMPLOYEES.ID = THIS.ID)
STORED NOT NULL;
您可以創建一個視圖。
您將需要替換列和表的名稱。
CREATE VIEW number_employees_per_day AS
SELECT
date_column,
COUNT(DISTINCT employee_id)
FROM table_name
GROUP BY date_column
ORDER BY date_column;
看來您不知道 select 一個工作日的員工人數。 方法如下(我不得不補上 id_workday 列,因為 workday_employees 中必須有一些像這樣的列來引用工作日):
SELECT
w.*,
(
SELECT COUNT(*)
FROM workday_employees we
WHERE we.id_workday = w.id
) AS num_of_employees
FROM workday w;
另外的選擇:
SELECT
w.*,
COALESCE(w.total, 0) AS num_of_employees
FROM workday w
LEFT JOIN
(
SELECT id_workday, COUNT(*) AS total
FROM workday_employees
GROUP BY id_workday
) w ON w.id_workday = w.id;
另一種選擇是橫向連接 ( OUTER APPLY
)。
有了查詢后,為方便起見創建一個視圖:
CREATE VIEW workday_counted AS
SELECT ... -- one of the queries above
;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.