Mysql 如何构造“的SQL视图”;存货;“为所有人”;商店“;同样地;分区“;?

Mysql 如何构造“的SQL视图”;存货;“为所有人”;商店“;同样地;分区“;?,mysql,view,Mysql,View,我有一个PHP/MySQL应用程序,它包含以下表格: STORE: store_id(1), ... store_id(2), ... store_id(3), ... store_id(4), ... store_id(5), ... ZONE: 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

我有一个PHP/MySQL应用程序,它包含以下表格:

STORE: store_id(1), ... store_id(2), ... store_id(3), ... store_id(4), ... store_id(5), ... ZONE: 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) INVENTORY: inv_id, store_id, ... ... 商店: 门店标识(1)。。。 门店标识(2)。。。 门店标识(3)。。。 门店标识(4)。。。 门店标识(5)。。。 区域: 区域标识(A)、门店标识(1) 区域标识(A)、门店标识(2) 分区标识(B)、门店标识(1) 分区标识(B)、门店标识(3) 分区标识(B)、门店标识(5) 分区标识(C)、门店标识(4) 分区标识(C)、门店标识(5) 库存: 库存标识、门店标识。。。 ... 如您所见,一个商店可能位于多个区域中,但区域id+商店id必须是唯一的(即,商店可能只在一个区域中出现一次)

仅给出“门店id”,然后:


如何为与给定“门店id”相同区域中的所有门店创建库存视图?

给定
门店id
(以下标识为
),此查询将为您提供属于相同区域的所有其他门店:

您可以将其转换为子查询,并在中使用
提取相应的库存:

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 = ?
    )   
)

我假设您的意思是与商店位于同一区域

编写查询以选择存储区:

SELECT zone_id 
FROM _ 
WHERE store_id = 'your_id'
我们将使用它作为内部查询

编写外部查询

CREATE VIEW _ AS 
SELECT _ 
FROM _ 
WHERE store_id IN (Inner query) AND store_id <> 'your_id
创建视图作为
选择
来自
其中存储\u id(内部查询)并存储\u id'您的\u id
以获取同一区域中的所有门店

我将让您在外部查询的基础上进行任何连接和选择

CREATE VIEW _ AS 
SELECT _ 
FROM _ 
WHERE store_id IN (Inner query) AND store_id <> 'your_id