我有四个表Ledger,accMaster,Accdetail,accGroup。
CREATE TABLE Accdetail (DetailID int,MasterID int,LedgerID int,Credit decimal(18,2));
INSERT INTO Accdetail
VALUES (1,1,500),(2,2,1000);
CREATE TABLE Ledgers (ID int,Name varchar(10),accGroupID int);
INSERT INTO Ledgers
VALUES (1,'A',1),'B',1);
CREATE TABLE accMaster (MasterID int,Date date);
INSERT INTO accMaster
VALUES (1,'2019-11-04'),'2019-11-03');
CREATE TABLE accGroup (ID int,Name varchar(10));
INSERT INTO accGroup
VALUES (1,'accounts'),'Others');
SELECT AL.Name,SUM(AD.Credit)
FROM Accdetail AD
LEFT OUTER JOIN Ledgers AL ON AL.ID = AD.LedgerID
LEFT OUTER JOIN accMaster AM ON AM.MasterID = AD.MasterID
LEFT OUTER JOIN accGroup AG ON AG.ID = AL.accGroupID
WHERE AM.Date = '2019-11-04'
GROUP BY AL.Name;
即使Ledger表中有两个条目,我也只能得到Ledger表中的一个条目的结果。这是因为在其他表中没有该分类账的相应条目。我发现有左联接和右联接的许多答案,但按照我的意愿却无济于事。
即使其他分类表中没有该分类帐的数据,我也希望从分类帐表中获取所有条目。
我想要得到的结果
| Name | Credit|
-----------------
| A | 500 |
-----------------
| B | 0 |
-----------------