【发布时间】:2020-11-16 20:33:17
【问题描述】:
对于 SQL 来说还是个新手,请耐心等待。我一直在努力想弄清楚如何通过加入 3 个表来创建这个 VIEW。我将使用模拟表等来保持这个非常简单。这样我就可以尝试理解答案 - 不只是复制和粘贴。
ICS_Supplies:
Supplies_ ID Item_Description
-------------------------------------
1 | PaperClips
2 | Rubber Bands
3 | Stamps
4 | Staples
ICS_Orders:
ID SuppliesID RequisitionNumber
----------------------------------------------------
1 | 1 | R1234a
6 | 4 | R1234a
2 | 1 | P2345b
3 | 2 | P3456c
4 | 3 | R4567d
5 | 4 | P5678e
ICS_Transactions:
ID RequsitionNumber OrigDate TransType OpenClosed
------------------------------------------------------------------
1 | R1234a | 06/12/20 | Req | Open
2 | P2345b | 07/09/20 | PO | Open
3 | P3456c | 07/14/20 | PO | Closed
4 | R4567d | 08/22/20 | Req | Open
5 | P5678e | 11/11/20 | PO | Open
这就是我想在查看结果中看到的内容
Supplies_ID Item RequsitionNumber OriginalDate TransType OpenClosed
---------------------------------------------------------------------------------------
1 | Paper Clips | P2345b | 07/09/20 | PO | OPEN
2 | Rubber Bands | Null | Null | Null | Null
3 | Stamps | Null | Null | Null | Null
4 | Staples | P56783 | 11/11/20 | PO | OPEN
我只是无法到达那里。我希望始终拥有与 ICS_Supplies 表中相同数量的记录。我需要加入 ICS_Orders 表才能获取申请编号,因为这是我需要加入 ICS_Transactions 表的内容。我不想在新添加的字段中看到数据,除非 ICS_Transactions.TransType = 'PO' AND ICS_Transactions.OpenClosed = 'OPEN',否则连接的字段应该被视为空,无论它们包含什么。如果可以吗?
我的研究表明这可能是一个 LEFT Join,这对我来说很新。我自己做了很多尝试,然后昨天发布了我的问题。但我一直在努力提出正确的问题,其他成员建议我再次发布问题。 .
如果需要,我可以分享我所做的事情,但我担心这会使事情变得过于混乱,因为我走错了方向。
我正在为需要一些背景信息的人添加原始问题的链接
如果需要任何其他信息,请询问。如果我遗漏了任何需要的细节,我会提前道歉。
【问题讨论】:
-
向我们展示您的 LEFT JOIN 尝试。
-
@jarlh - 我没有发布它,因为我分享了一个链接,其中包含我原来的问题、我原来的左连接和我之前所做的所有工作。我觉得在这里复制所有这些并不是一个好习惯。相反,我分享了一个链接——就像我的帖子说的那样。无论如何,现在已经回答了,但感谢您的帮助!
标签: sql subquery left-join inner-join