从一个表中检索数据,取决于 PostgresSql 中的另一个表数据

问题描述

我在桌子上工作。我有三个表名 StockInfos, TransferInfos,TransferInfoDetails

下面给出了这些表的图像视图。

股票信息

enter image description here

传输信息

enter image description here

转移信息详情

enter image description here

现在,场景是,

  1. 我为产品 1产品 2公司 1公司 2 进行了交易.因此,一个 TransferInfo 是由 Id = 1 创建的,而两个 TransferInfoDetails 是由 Id = 1Id = 2 创建的。 TransferInfoDetails 都包含 TransferInfoId = 1 作为 TransferInfoId 是一个 Foreign KeyTransferInfoDetails 相应地包含 ProductId = 1ProductId = 2

  2. 然后,我从公司 2公司 1 进行了另一笔仅针对 产品 2 的交易。 因此,另一个 TransferInfoId = 2 创建,一个 TransferInfoDetailsId = 3 创建,TransferInfoDetail 包含 {{ 1}}。

现在,如果我想删除第一次传输信息,这是不允许的,因为它的一个产品(产品 2)出现在另一个传输信息中,该信息是在第一次传输信息之后创建的。因此,用户必须先删除上次传输信息,然后再删除传输信息。因此,条件是,如果创建了转移信息,其详细信息包含已出现在先前转移信息详细信息中的任何产品 ID,则无法删除先前转移信息。

在这个例子中

  1. 在删除传输信息 2 之前删除传输信息是不允许的,因为它的一个产品(产品 1)出现在另一个传输信息细节中。

  2. 所以,先删除转移信息2,然后再删除转移信息1

现在,虽然我想检索 TransferInfos 的列表,但我想根据 TransferInfoDetails 中的 Product 获得一个名为 ProductId = 2 的标志。意味着,如果 TransferInfoDetails 中的任何一个 Product Of TransferInfoDetails 出现在当前传输之后创建的另一个横断面中,则 IsDeletable 标志将设置为 IsDeletable,否则为 NO

那么,如何在 Posgres 函数中使用 PostgresSql 实现它???

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)