gpt4 book ai didi

sql - 如何在 PostgreSQL 中隐藏具有相同引用 ID 的不同行集

转载 作者:行者123 更新时间:2023-11-29 12:26:43 25 4
gpt4 key购买 nike

我有 2 个相关的 SQL 表:

购买

id (PK),  
code,
status (complete, void)

接收

id (PK),  
code,
purchase_id (FK),
status (complete, void)

With Purchase 有很多Receiving(一对多)

如果LEFT JOIN的结果是

----------------------------------------------------------------------------------------
|Purchase.id|Purchase.code|Purchase.status|Receiving.id|Receiving.code|Receiving.status|
----------------------------------------------------------------------------------------
| 1 | PO001 | complete | 1 | RG001 | complete | X HIDE
| 2 | PO002 | complete | 2 | RG002 | void | X HIDE
| 2 | PO002 | complete | 3 | RG003 | complete | X HIDE
| 2 | PO003 | complete | NULL | NULL | NULL | V SHOW
| 3 | PO004 | complete | 4 | RG004 | void | V SHOW

关键是我想显示“购买”,只有当“接收”状态不完整且为空时。
所以结果应该只显示 PO003 和 PO004。

PO002 不应显示,因为它已经具有完整的“接收”而 PO001 也不会显示,因为它已经有 1 个完整的“接收”。

我希望你们明白我的意思。我如何在 SQL 上查询它?

最佳答案

在您的查询中加入WHERE 条件。

SELECT p.id, p.code, p.status, r.id, r.code, r.status
FROM Purchase p
INNER JOIN Receiving r ON p.id = r.purchase_id
WHERE r.id IS NULL
AND r.status != 'complete'

关于sql - 如何在 PostgreSQL 中隐藏具有相同引用 ID 的不同行集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31828932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com