簡體   English   中英

如何在一個輸出中從兩個表中獲得兩個總和?

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

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