[英]MySQL, Filter records in a table based on values in two other separate tables
我正在嘗試根據存儲在兩個單獨的表 B 和 C 上的映射約束來過濾 MySQL 表 A 上的財務記錄,其中:i。 表 1 包含按項目捐助者、工作分解結構 ID 和年份划分的預算和支出金額
wbs year donor budget exp
1 2019 a 10 10
2 2019 b 11 11
3 2020 c 12 12
4 2020 d 13 13
ii. 表 2 包含項目 ID 及其組成的工作分解結構 ID
project wbs
001 1
002 2
003 3
001 4
002 5
003 6
iii. 表 3 有項目 ID 和相應的捐助者。
project donor
001 a
002 b
003 c
001 d
002 a
003 b
我想查看列出的所有項目的總預算和支出。 我寫了以下查詢:
SELECT
`t2`.`project` AS `project`,
`t2`.`wbs` AS `wbs`,
`t1`.`year` AS `year`,
`t1`.`grant` AS `grant`,
`t1`.`funded_program_key` AS `funded_program_key`,
`t1`.`budget` AS `budget`,
`t1`.`exp` AS `exp`
FROM
`wbs_table` `t2`
LEFT JOIN `expenditure_table` `t1` ON `t2`.`wbs` = `t1`.`wbs`
LEFT JOIN `donor_table` `t3` ON `t1`.`donor` = `t3`.`donor`
WHERE `t3`.`project` = `t2`.`project`
AND `t3`.`project` IS NOT NULL
但是,運行時似乎缺少數字,我似乎無法弄清楚我哪里出錯了。
這是我想要的表格結果應該是這樣的:
project wbs year donor budget exp
001 1 2019 a 10 10
002 2 2019 b 11 11
003 3 2020 c 12 12
根本沒有描述過程的邏輯。
但是,查看列名和值我建議下一個查詢:
SELECT project, wbs, e.year, donor, e.budget, e.exp
FROM expenditure_table e
JOIN wbs_table w USING (wbs)
JOIN donor_table в USING (project, donor);
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=0ed23d0bcee9c4dc3f12eea383c4aa79
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.