각 지역에 1 개의 매장과 1 개의 창고가있는 5 개의 지역이 있습니다. 지역과 해당 상점 및 창고가 포함 된 테이블이 있습니다. 또한 매장과 창고의 재고 목록이있는 테이블도 있습니다. 마지막으로웨어 하우스의 허용 수량을 나열하는 표를 준비하십시오. , 상점 1 창고 1 지역 1에 속하는 문제는데카르트 제품 조인 및 제거
FACILITY ID ITEM_NUMBER QTY
STORE 1 15D 2
WAREHOUSE 1 15D 1
나는이 형식으로보고 싶다 : 나는 지금 재고 테이블에 보면 그것은 무언가 같이 말할 것
REGION WAREHOUSE QTY OH STORE QTY OH
1 1 2 1 1
나는 좌우 교차 조인 조인 내부 조인 조인에서 내 주위 가입 변경
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;
;
및 등등 ... 그래서 나는 다음과 같은 SQL을 썼다 그러나, 나는 30 개의 레코드를 얻습니다. (그리고 나는 수백 개의 레코드가 필요합니다.) 나는 Cartesian 제품을 얻습니다. 누구든지 내가 뭘 잘못하고있어 조언을 제공 할 수 있습니까?
9 번 구문이 깨졌습니다. INVENTORIES C on (A.FACILITY_ID = FACILITY_ID) 및 B.ITEM_NUMBER = C.ITEM_NUMBER)'에 참여하십시오. '및'은'join on' 절의 일부분이되어야합니까? 마지막에는 여분의 권리가 있습니다. – dg99
죄송합니다, 그걸 잊어 버렸습니다. 네, 시작 괄호가 있어야합니다. 나는 여기서 실수를했고 TOAD는하지 않았다. 나는 그것을 고칠 것이다. 지적 해 주셔서 감사합니다. 이 문장은 Toad에서 실행됩니다. 그러나 그것은 나에게 엄청나게 적은 양의 레코드 나 데카르트 제품을 준다. –
sqlfiddle을 설정할 수 있습니까? – terary