MS Access SQL从表1选择原始连接表2选择匹配
我在表MS Access SQL从表1选择原始连接表2选择匹配,sql,ms-access,Sql,Ms Access,我在表Master中有一个来自银行的交易列表,每个交易都有一个唯一的masterID。然后,用户将这些交易分为日记账分录,这些分录存储在表Master\u split中。Master\u Split表有一个名为import\u Master\u ID的外键字段,它将两个表连接在一起 我正在尝试创建一个查询来选择主记录记录,以及相同格式的分割记录 最初我使用了右连接,因为只需要拆分条目。然而,现在需求已经改变,我不确定我应该研究什么技术/关键词。您可以在第三个表中看到所需的输出 任何指导,甚至为我
Master
中有一个来自银行的交易列表,每个交易都有一个唯一的masterID
。然后,用户将这些交易分为日记账分录,这些分录存储在表Master\u split
中。Master\u Split
表有一个名为import\u Master\u ID
的外键字段,它将两个表连接在一起
我正在尝试创建一个查询来选择主记录
记录,以及相同格式的分割记录
最初我使用了右连接,因为只需要拆分条目。然而,现在需求已经改变,我不确定我应该研究什么技术/关键词。您可以在第三个表中看到所需的输出
任何指导,甚至为我指出正确的方向都将不胜感激。请让我知道,如果任何关于这个问题是不清楚的,并感谢您的任何帮助
SELECT
M.[masterID], M.[OrigAcctNum], S.[NewAcctNum], S.[PostAmnt]
FROM Master M
RIGHT JOIN Master_Split S ON M.[masterID] = S.[import_Master_ID]`
主表
+----------+---------+----------+
|masterID | AcctNum | PostAmnt|
+----------+---------+----------+
| 1 | 99999 | 150 |
+----------+---------+----------+
| 2 | 88888 | 200 |
+----------+---------+----------+
Master\u分割
+------------------+-----------+-----------+
|导入|主控| ID |拆分账户|拆分账户|
+------------------+-----------+-----------+
| 1 | 12345 | -50 |
+------------------+-----------+-----------+
| 1 | 54321 | -100 |
+------------------+-----------+-----------+
| 2 | 11111 | -175 |
+------------------+-----------+-----------+
| 2 | 22222 | -25 |
+------------------+-----------+-----------+
结果
+----------+-------------+------------+----------+--------+
|masterID | OrigAcctNum | NewAcctNum | PostAmnt |状态|
+----------+-------------+------------+----------+--------+
|1 | 99999 | 99999 | 150 |原|
+----------+-------------+------------+----------+--------+
|1 | 99999 | 12345 |-50 |分割|
+----------+-------------+------------+----------+--------+
|1 | 9999 | 54321 |-100 |分割|
+----------+-------------+------------+----------+--------+
|2 | 88888 | 88888 | 200 |原|
+----------+-------------+------------+----------+--------+
|2 | 88888 | 11111 |-175 |分割|
+----------+-------------+------------+----------+--------+
|2 | 88888 | 2222 |-25 |分割|
+----------+-------------+------------+----------+--------+
UNION ALL将在一个结果集中为您提供两组信息:
SELECT
M.[masterID], M.[OrigAcctNum], M.[NewAcctNum], M.[PostAmnt], 'Orig' AS [Status]
FROM Master M
UNION ALL
SELECT
M2.[masterID], M2.[OrigAcctNum], S.[NewAcctNum], S.[PostAmnt], 'Split' AS [Status]
FROM Master M2
RIGHT JOIN Master_Split S ON M2.[masterID] = S.[import_Master_ID]`
像这样的东西可能会起作用。。在回家前还有5分钟的时间,我在便笺簿上写下了对不起
select * from
(
select
masterID as ID, AcctNum as OrigAcctNum, AcctNum as NewAcctNum, PostAmnt, 'Orig' as Status
from Master
union all
select
ms.import_master_ID as ID, m.AcctNum as OrigAcctNum, ms.SplitAcct as NewAcctNum, ms.SplitAmnt as PostAmnt, 'Split' as Status
from Master_Split ms
join Master m on m.masterID = ms.import_master_ID
where
)
order by ID
你期望的结果是什么?需求是如何变化的?我对问题进行了编辑,以使其更清楚。但是期望的输出是第三个表。结合union和right join,没有想到这一点。非常感谢。