簡體   English   中英

MySQL,根據另外兩個單獨表中的值過濾表中的記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM