我无法找到我的问题的解决方案。我有 4 张桌子:
BomModule:此表代表数据库中的一个模块。
CREATE TABLE "BOMMODULE"
(
"MODULEID" NUMBER(10,0) NOT NULL ENABLE,
"ISROOTMODULE" NUMBER(1,0) NOT NULL ENABLE,
"MODULENAME" VARCHAR2(255 CHAR),
...
)
BomItem:这个表代表一个叶子 - 或数据库中的一个项目。
CREATE TABLE "BOMITEM"
(
"ITEMID" NUMBER(10,0) NOT NULL ENABLE,
...
)
ModuleConnection:此表将一个模块映射到另一个父模块。您可以定义属于特定父模块的子模块的数量。
CREATE TABLE "MODULECONNECTION"
(
"ID" NUMBER(10,0) NOT NULL ENABLE,
"QUANTITY" NUMBER(10,0) NOT NULL ENABLE,
"SUBMODULE_MODULEID" NUMBER(10,0) NOT NULL ENABLE,
"PARENTMODULE_MODULEID" NUMBER(10,0) NOT NULL ENABLE,
...
)
ItemModuleConnection: 此表将所有离开项目映射到一个模块。此外,您可以定义一个模块的项目数量。
CREATE TABLE "ITEMMODULECONNECTION"
(
"ID" NUMBER(10,0) NOT NULL ENABLE,
"QUANTITY" NUMBER(10,0) NOT NULL ENABLE,
"ITEMID" NUMBER(10,0),
"MODULEID" NUMBER(10,0),
...
)
从表结构中可以看出,项目和模块是相互连接的,并且具有不同的数量。由于这些连接非常灵活,我无法创建一个 SQL 语句,它将为我提供一个项目的总数量:
select quantity from ...... where itemId = xy;
SQL 语句应该检查从项目到根模块的所有数量并将它们相乘:
2 x rootmodule (total 2)
-- 1x submodule 1 (total 2)
-- 2x submodule 2 (total 4)
---- 5x item 1 (total 20)
---- 6x item 2 (total 24)
请帮我创建这个 sql 语句,非常感谢您的回答!
约束:
- 它必须是 SQL 语句(用于 Java 应用程序)
- 数据库是 Oracle 11g