У меня есть четыре таблицы: Ledger, AccMaster, AccDetail, AccGroup.
CREATE TABLE AccDetail (DetailID int,
MasterID int,
LedgerID int,
Credit decimal(18, 2));
INSERT INTO AccDetail
VALUES (1, 1, 1, 500), (2,2,2,1000);
CREATE TABLE Ledgers (ID int,
Name varchar(10),
AccGroupID int);
INSERT INTO Ledgers
VALUES (1, 'A', 1),
(2, 'B', 1);
CREATE TABLE AccMaster (MasterID int,
Date date);
INSERT INTO AccMaster
VALUES (1, '2019-11-04'),
(2, '2019-11-03');
CREATE TABLE AccGroup (ID int,
Name varchar(10));
INSERT INTO AccGroup
VALUES (1, 'Accounts'),
(2, '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 |
-----------------