好的,我有3组这样的数据:
现在我想检索有关每对的信息
我期待的最终结果是产品 - 仓库 - 数量。
它设计奇特,但我想从产品仓库中提取所有记录以获取数量。
因为我想抓住ProductWarehouse中的所有东西,我试图离开外连接,它应该返回1000条记录,但实际上它给了我1500?为什么它会给我更多记录?
答案 0 :(得分:0)
尝试将外部联接切换到内部联接。 外连接将匹配NULL值,因此如果Warehouse中的条目与Product不匹配,则会返回所有产品信息为NULL的附加行
(最佳猜测没有提供更具体的表格信息)
答案 1 :(得分:0)
假设模式看起来像
create table Product
(
product_id int not null ,
...
primary key ( product_id ) ,
)
create table Warehouse
(
warehouse_id int not null ,
...
primary key ( warehouse_id ) ,
)
create table ProductWarehouse
(
product_id int not null ,
warehouse_id int not null ,
primary key ( product_id , warehouse_id ) ,
foreign key ( product_id ) references Product( product_id ) ,
foreign key ( warehouse_id ) references Warehouse( warehouse_id )
)
create table WarehouseTransferNumber
(
transfer_number int not null ,
warehouse_id int not null ,
...
primary key ( transfer_number ) ,
foreign key ( warehouse_id ) references Warehouse( warehouse_id ) ,
)
create table ProductTransferNumber
(
product_id int not null ,
transfer_number int not null ,
quantity int not null ,
...
primary key ( product_id , transfer_number ) ,
foreign key ( product_id ) references Product( product_id ) ,
foreign key ( transfer_number ) references WarehouseTransferNumber ( transfer_number ) ,
)
你应该能够说出类似
的内容select pw.product_id ,
pw.warehouse_id ,
sum(ptn.quantity)
from ProductWarehouse pw
join WarehouseTransferNumber wtn on wtn.warehouse_id = pw.warehouse_id
join ProductTransferNumber ptn on ptn.product_id = pw.product_id
group by pw.product_id ,
pw.warehouse_id