I have two tables:
- Account
x
account_id2 | account_name`
11111 ABC
55555 HEY
99999 XYZ
- Journal
jid | date | dbt_id | description | total_value | cr_id |
1 13/02/2020 11111 XXXXX 5000 55555
2 15/02/2020 99999 YYYYY 100 11111
I need to list all transactions from a certain period of time of a certain account. For example, for the date 13/02/2020 – 15/02/2020 for account 11111,
The query should produce a result like below:
jid | date | cr_name | debit | description | db_name | credit |
1 13/02/2020 HEY 5000 XXXXX
2 15/02/2020 YYYYY XYZ 100
Here are what I have tried
-- Listing all CREDIT transactions with the name of the Debit account
SELECT j.jid, j.date, a.account_name as db_name, FORMAT(j.total_value,0) AS credit, j.description
FROM journal AS j INNER JOIN account AS a
ON j.dbt_id = a.account_id2
WHERE j.cr_id = 11111;
-- Listing all DEBIT transactions with the name of the Credit account
SELECT j.jid, j.date, a.account_name as cr_name, FORMAT(j.total_value,0) AS debit, j.description
FROM journal AS j INNER JOIN account AS a
ON j.cr_id = a.account_id2
WHERE j.dbt_id = 11111;
-- So in an effort to join them
SELECT
j.jid, j.date, a.account_name AS cr_name, FORMAT(j.total_value,0) AS debit, j.description,
b.account_name AS dbt_name, FORMAT(k.total_value, 0) AS credit, k.description
FROM journal AS j
INNER JOIN journal AS k
ON k.dbt_id = j.dbt_id
INNER JOIN account AS a
ON j.cr_id = a.account_id2
INNER JOIN account AS b
ON k.dbt_id = b.account_id2
WHERE j.dbt_id = 11111 OR k.dbt_id = 11111;
But it produces every single combinations of entries that satisfies the WHERE condition
Please do help. I have searched various posts and tutorials and yet have not found similar case.
Advertisement
Answer
I beleive you are looking for the below.
select j.jid, , j.date,
iif(j.dbt_id=11111,null,d.account_name) as dr_name,
iif(j.dbt_id=11111,null,total) as debit,
description,
iif(j.crd_id=11111,null,c.account_name) as cr_name,
iif(j.crd_id=11111, null,total) as credit
from journals j join accounts d on a.account_id2 = j.dbt_id
join accounts c on c.account_id2 = j.crd_id
where j.dbt_id = 11111 or j.crd_id = 11111