Как мне построить SQL View «инвентаря» для всех «магазинов» в одной «зоне»? - PullRequest
0 голосов
/ 12 ноября 2019

У меня есть приложение 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, ...
...

Как видите, магазин может находиться в нескольких зонах, но zone_id + store_id должен быть уникальным (т. Е. Хранилище может появиться в зоне только один раз.)

Учитывая только 'store_id', затем:

Как мне создать представление ИНВЕНТАРЯ для всех МАГАЗИНОВ в той же ЗОНЕ, что и указанный "store_id"

1 Ответ

0 голосов
/ 12 ноября 2019

Учитывая 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 = ?
    )   
)
...