我有三个表的文章,库存和仓库。甲骨文,加入特殊要求
CREATE TABLE "ARTICLE"
( "ID" NUMBER(9,0),
"NAME" VARCHAR2(30 BYTE)
)
CREATE TABLE "INVENTORY"
( "ID" NUMBER(9,0),
"ARTICLE_ID" NUMBER(9,0),
"QUANTITY" NUMBER(9,0),
"WAREHOUSE_ID" NUMBER(9,0)
)
CREATE TABLE "WAREHOUSE"
( "ID" NUMBER(9,0),
"NAME" VARCHAR2(30 BYTE)
)
我创建了一个观点,我显示了所有库存(含项目名称等)
CREATE VIEW "INVENTORY_VIEW" AS
a.ID AS A_ID,
a.NAME AS A_NAME,
i.ID AS I_ID,
i.QUANTITY AS I_QUANTITY,
i.WAREHOUSE_ID AS I_WAREHOUSE_ID
FROM
ARTICLE a
LEFT OUTER JOIN INVENTORY i ON i.ARTICLE_ID = a.ID
我这样做是为了确保,我得到一个排的每个项目,即使有库存中没有行。 (I_WAREHOUSE_ID是在特殊情况下空) 这工作,除了一个案例精:
只要有库存一行当然另一个仓库行(与I_WAREHOUSE_ID = NULL)在前看不见的其他仓库。 (其他仓库(例如仓库2)通过“WHERE I_WAREHOUSE_ID = 2”或“I_WAREHOUSE_ID为空”来选择库存。)
任何人的想法如何解决这个问题? 如果本文和仓库没有任何iventory行,我需要的是每个WAREHOUSE_ID(带ID)的文章行。 我的想法是创建所有文章/仓库组合的第二个视图,然后与清单加入该表,但我没有成功。
如果您正在过滤'warehouse_id = 2',您为什么要包含那些不在该仓库库存中的物品? – APC
物品表适用于两个仓库。如果没有可用的库存行,我想至少显示一行没有库存。 – Sebastian