我有一个具有下表的PHP / MySQL应用程序:

商店:
store_id(1),...
store_id(2),...
store_id(3),...
store_id(4),...
store_id(5),...

区:
zone_id(A),store_id(1)
zone_id(A),store_id(2)
zone_id(B),store_id(1)
zone_id(B),store_id(3)
zone_id(B),store_id(5)
zone_id(C),store_id(4)
zone_id(C),store_id(5)

库存:
inv_id,store_id,...
...


如您所见,一个商店可能在多个区域中,但是zone_id + store_id必须是唯一的(即商店只能在一个区域中出现一次)。

仅给出“ store_id”,则:

如何为与给定的“ store_id”相同的ZONE中的所有STORE创建库存视图?

最佳答案

给定一个store_id(以下标识为?),此查询将为您提供属于同一区域的所有其他商店:

select store_id
from zone z
where exists (
    select 1
    from zone z1
    where
        z1.zone_id = z.zone_id
        and z1.store_id = ?
)


您可以将其转换为子查询,并使用in提取相应的清单:

select i.*
from inventory i
where i.store_id in (
    select store_id
    from zone z
    where exists (
        select 1
        from zone z1
        where
            z1.zone_id = z.zone_id
            and z1.store_id = ?
    )
)

10-08 15:21