Crear vista tiene problemas con JOINS

Tengo 5 regiones que contienen 1 tienda y 1 almacén. Tengo una tabla que contiene las regiones y las tiendas y almacenes correspondientes. También tengo una tabla que enumera los deviseios de las tiendas y almacenes. Finalmente, tenga una tabla que enumere las cantidades permitidas para el almacén. Si miro la tabla de deviseio en este momento, diría algo como:

FACILITY ID ITEM_NUMBER QTY STORE 1 15D 2 WAREHOUSE 1 15D 1 

El problema es que Store 1 y Warehouse 1 pertenecen a la región 1 y me gustaría verlo en este formatting:

 REGION WAREHOUSE QTY OH STORE QTY OH 1 1 2 1 1 

y así sucesivamente … Así que escribí el siguiente SQL:

 Create or replace view REGION_BALANCES as with WAREHOUSES as ( select A.REGION_CODE,A.REG_DESC,A.WAREHOUSE_NUMBER,A.FACILITY_ID,C.ITEM_NUMBER,sum(C.IN_STOCK_QTY) as IN_STOCK_QTY, B.ALLOWED_QTY from REG_WHS_STR_ASSOC A join ALLOWANCES B on (A.FACILITY_ID = B.FACILITY_ID) join INVENTORIES C on (A.FACILITY_ID = FACILITY_ID) and B.ITEM_NUMBER = C.ITEM_NUMBER) group by A.REGION_CODE,A.REG_DESC,A.WAREHOUSE_NUMBER,C.ITEM_NUMBER,B.ALLOWED_QTY ), STORES as ( select A.REGION_CODE,A.REG_DESC,A.STORE_NUMBER,A.FACILITY_ID,B.ITEM_NUMBER,sum(B.IN_STOCK_QTY) as IN_STOCK_QTY from REG_WHS_STR_ASSOC A join INVENTORIES B on (A.FACILITY_ID = B.FACILITY_ID) group by A.REGION_CODE,A.REG_DESC,A.STORE_NUMBER, B.ITEM_NUMBER ) select A.REGION_CODE,A.REG_DESC,A.WAREHOUSE_NUMBER,A.FACILITY_ID,WAREHOUSES.ITEM_NUMBER,WAREHOUSES.IN_STOCK_QTY,WAREHOUSES.ALLOWED_QTY,STORES.STORE_NUMBER,STORES.FACILITY_ID,STORES.ITEM_NUMBER,STORES.IN_STOCK_QTY from REG_WHS_STR_ASSOC A join WAREHOUSES on (A.REGION_CODE = WAREHOUSES.REGION_CODE) join STORES on (A.REGION_CODE = STORES.REGION_CODE) order by 5,1 asc; 

He cambiado mi unión desde las uniones a la izquierda para unir las uniones a las uniones internas; sin embargo, o consigo 30 loggings (y necesito cientos de loggings) o obtengo productos cartesianos. ¿Alguien puede dar consejos sobre lo que estoy haciendo mal?

¡Gracias por adelantado!

Olvidaste unir almacenes y tiendas por número de artículo (más la combinación izquierda es la mejor para este caso)

 Create or replace view REGION_BALANCES as with WAREHOUSES as ( select A.REGION_CODE, A.REG_DESC, A.WAREHOUSE_NUMBER, A.FACILITY_ID, C.ITEM_NUMBER,sum(C.IN_STOCK_QTY) as IN_STOCK_QTY, B.ALLOWED_QTY from REG_WHS_STR_ASSOC A join ALLOWANCES B on (A.FACILITY_ID = B.FACILITY_ID) join INVENTORIES C on (A.FACILITY_ID = FACILITY_ID) and B.ITEM_NUMBER = C.ITEM_NUMBER) group by A.REGION_CODE,A.REG_DESC,A.WAREHOUSE_NUMBER,C.ITEM_NUMBER,B.ALLOWED_QTY ), STORES as ( select A.REGION_CODE,A.REG_DESC,A.STORE_NUMBER, A.FACILITY_ID,B.ITEM_NUMBER,sum(B.IN_STOCK_QTY) as IN_STOCK_QTY from REG_WHS_STR_ASSOC A join INVENTORIES B on (A.FACILITY_ID = B.FACILITY_ID) group by A.REGION_CODE,A.REG_DESC,A.STORE_NUMBER, B.ITEM_NUMBER ) select A.REGION_CODE, A.REG_DESC,A. WAREHOUSE_NUMBER, A.FACILITY_ID, WAREHOUSES.ITEM_NUMBER, WAREHOUSES.IN_STOCK_QTY, WAREHOUSES.ALLOWED_QTY, STORES.STORE_NUMBER, STORES.FACILITY_ID, STORES.ITEM_NUMBER, STORES.IN_STOCK_QTY from REG_WHS_STR_ASSOC A left join WAREHOUSES on (A.REGION_CODE = WAREHOUSES.REGION_CODE) left join STORES on (A.REGION_CODE = STORES.REGION_CODE AND STORES.ITEM_NUMBER = WAREHOUSES.ITEM_NUMBER) order by 5,1 asc;