我正在创建一个Python脚本,用于显示商店中不再可用的项目(位置1),但在仓库(位置99)。例如。需要补货的物品清单。困难在于,库存管理系统不是将商品数量设置为0,而是将商品从数据库中完全移除。此外,项目没有唯一的ID,但是两列是序列号和列与项目大小的组合。查询不在列表中的项目,但在一列中没有唯一的标识
的(PostgreSQL的)数据库是restock
与一种表inventory
看起来像这样:
====================================================================
| serialnumber | size | location | itemcount | season |
--------------------------------------------------------------------
| 1120.10.0369 | 140 | 99 | 8 | 74 |
| 1120.10.0369 | 140 | 1 | 2 | 74 |
| 1120.10.4011 | 170/176 | 99 | 3 | 74 |
| 1120.10.4011 | 170/176 | 1 | 2 | 74 |
| 1120.10.4011 | 86/92 | 99 | 1 | 74 |
| 1120.10.8006 | 158 | 99 | 1 | 74 |
| 1120.10.8006 | 158 | 1 | 2 | 74 |
在上述示例中,与物品的序列号1120.10.4011
和尺寸86/92
是在位置99
(仓库),但可用的没有一行的序列号为1120.10.4011
,大小为86/92
,其中位置为1
,因此我希望列表中的项目可以进行补货。
我试图表明,不存在数据的项目通过使用一个GROUP BY
查询计数做到这一点:
getresult = "SELECT serialnumber, size, location, itemcount, season, COUNT(*)" + \
"FROM inventory " + \
"WHERE season = 74" + \
"AND location != 1" + \
"GROUP BY serialnumber, size " + \
"HAVING COUNT(*) < 1"
然而,由于预期这不起作用。
的问题依然存在:
- 我如何可以检索行从数据库中缺少一个列表?
或者
- 我如何可以检索与其中SERIALNUMBER +大小为有99位,但不存在以1:1的位置排列表?
您是否尝试过与自己的左连接? –