我希望创建一个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"
然而,这并不像预期的那样有效。你知道吗
问题仍然存在:
或者
必须在not exist子句中使用subselect:
这是我知道的在SQL级别直接查找不存在的值的唯一方法,因为
IS NULL
即使在外部连接测试中,值也是原始表,而不是select返回的值。你知道吗相关问题 更多 >
编程相关推荐