我有一个具有下表的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 = ?
)
)