[英]How to get two sums from two tables in one output?
我有兩個表:
Receive_Amount_Details
用於從建築工地所有者處貸記金額,以及SitewiseEmployee
借記支付給勞工的金額。 對於兩個表中都存在的每個Date
,我想:
Receive_Amount_Details
所有Amount_Received
相加為Total_Receive_Amount_from_siteowner
,以及SitewiseEmployee
所有Amount
SitewiseEmployee
為輸出表中的Total_Amount_Payed_to_Labour
列。 兩個表都有Date
列,但我想要輸出中的單個Date
列。
如果沒有收到任何一天的金額並且支付了人工,它應該在輸出表中,如果有任何單天的金額沒有收到但沒有支付人工,那么它也需要出現在輸出表中。
CREATE TABLE `Receive_Amount_Details` (
`Id` int(10) NOT NULL AUTO_INCREMENT,
`SiteId` int(5) NOT NULL,
`Amount_Received` int(10) NOT NULL,
`Date` date NOT NULL,
PRIMARY KEY (`Id`),
KEY `SiteId` (`SiteId`),
CONSTRAINT `Receive_Amount_Details_ibfk_1` FOREIGN KEY (`SiteId`)
REFERENCES `SiteList` (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1
和
CREATE TABLE `SitewiseEmployee` (
`Id` int(10) NOT NULL AUTO_INCREMENT,
`SiteId` int(5) NOT NULL,
`EmployeeId` int(10) NOT NULL,
`Amount` varchar(10) DEFAULT NULL,
`Date` date NOT NULL,
PRIMARY KEY (`Id`),
KEY `SiteId` (`SiteId`),
KEY `EmployeeId` (`EmployeeId`),
CONSTRAINT `SitewiseEmployee_ibfk_1` FOREIGN KEY (`SiteId`)
REFERENCES `SiteList` (`Id`),
CONSTRAINT `SitewiseEmployee_ibfk_2` FOREIGN KEY (`EmployeeId`)
REFERENCES `Employee` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1
假設一個表中的日期可能在另一個表中不存在,反之亦然,則需要執行完整的外部聯接。 MySql 沒有這樣的連接類型,但是可以通過聯合來實現:
select `Date`,
sum(Amount_Received) as Sum_Amount_Received,
sum(Amount) as Sum_Amount
from (
select `Date`, Amount_Received, 0 as Amount
from Receive_Amount_Details
union
select `Date`, 0, Amount
from SitewiseEmployee
) as dates
group by `Date`;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.