如何在sql中查找不在正确位置的产品

如何在sql中查找不在正确位置的产品,sql,Sql,如何找到同一包装内的产品,考虑到物理限制,必须在仓库内的同一位置 示例模式 创建表格库存 id序列号, 产品id整数不为空引用产品id, 位置\u id整数不为空引用位置id, 包id整数引用包id, 数量整数 ; 在股票价值中插入1,1,1,1,1; 在股票价值中插入2,2,1,1,1; 在股票价值中插入3,3,2,1,1; 在股票价值中插入4,4,2,1,1; 在股票价值中插入5,1,2,1,1; 在股票价值中插入6,1,3,1,1; 我的问题 从中选择程序包id 选择计数*,t2.产品标识

如何找到同一包装内的产品,考虑到物理限制,必须在仓库内的同一位置

示例模式

创建表格库存 id序列号, 产品id整数不为空引用产品id, 位置\u id整数不为空引用位置id, 包id整数引用包id, 数量整数 ; 在股票价值中插入1,1,1,1,1; 在股票价值中插入2,2,1,1,1; 在股票价值中插入3,3,2,1,1; 在股票价值中插入4,4,2,1,1; 在股票价值中插入5,1,2,1,1; 在股票价值中插入6,1,3,1,1; 我的问题

从中选择程序包id 选择计数*,t2.产品标识,t2.包装标识 从库存t2 按t2分组。产品id,t2。包装id 计数*>1的 t3; 从库存t4中选择t4.*, 选择count*,t1.package\u id,t1.location\u id 来自库存t1 其中t1.package_id在select package_id from中 选择计数*,t2.产品标识,t2.包装标识 从库存t2 按t2分组。产品id,t2。包装id 计数*>1的 t3 按t1.package\u id、t1.location\u id分组 计数*>1 t5 其中t5.package_id=t4.package_id,t5.location_id=t4.location_id; 您可以使用exists:

如果只需要软件包,则聚合很容易:

select package_id
from stock s
group by package_id
having min(location_id) <> max(location_id);
select package_id
from stock s
group by package_id
having min(location_id) <> max(location_id);