Sql 对焊

Sql 对焊,sql,Sql,有五张桌子 项目编号,产品名称 ProductBatch productBatchId、ItemNo、batchName、purchaseRate 损坏库存调整ID、日期、说明 DamageStockItem damageStockDetailsId、AdjustmentId、productBatchId 库存过帐序列号、productBatchId、出库数量、凭证类型。 我的目标是通过此查询从上表中检索每个损坏库存项目的所有信息: select P1.ItemNo, B1.prod

有五张桌子

项目编号,产品名称 ProductBatch productBatchId、ItemNo、batchName、purchaseRate 损坏库存调整ID、日期、说明 DamageStockItem damageStockDetailsId、AdjustmentId、productBatchId 库存过帐序列号、productBatchId、出库数量、凭证类型。 我的目标是通过此查询从上表中检索每个损坏库存项目的所有信息:

select  
    P1.ItemNo, B1.productBatchId, S1.serialNumber, 
    P1.productName, S1.outwardQuantity, DS.damageStockDetailsId
FROM         
    Items AS P1 
INNER JOIN    
    ProductBatch AS B1 ON P1.ItemNo = B1.ItemNo
INNER JOIN   
    StockPosting AS S1 ON B1.productBatchId = S1.productBatchId
INNER JOIN   
    DamageStockItem as DS on DS.productBatchId = B1.productBatchId
INNER JOIN   
    DamageStock AS MASTER1 ON MASTER1 .AdjustmentId = DS.ItemAdjustmentId
WHERE 
    S1.voucherType = 'Damage Stock' 
    AND DS.ItemAdjustmentId = '10001'

但是它显示了damageStockDetailsId的重复值,它是DamageStockItem表的主键,我不知道这些表之间的关系是否有问题,我在建立StockPosting表和DamageStock之间的关系时也解决了这个问题,我将StockPosting表的主键作为外键放在DamageStockItem中,它没有显示任何重复值。我想知道这种关系是正确的还是错误的。我需要你对这个问题的看法。

在表DamageStockItem或DamageStockDetails中,每个AdjustmentId可以有几个damageStockDetailsId,不管它叫什么


由于它们连接到AdjustmentId,您也应该输出该ID,以查看看似相同的DamageStockDetailsID所属的位置。

请更正不一致的表名DamageStockDetails/DamageStockItem和DamageStcokMaster/DamageStock。我刚刚这么做了,但是我的编辑被还原了。@nlu请不要这样修改问题。在本例中,这似乎不是问题所在,但对于某些问题,像这样的简单不一致实际上可能是问题所在;重播。复制记录时,其值是否不同?如果是这样,它解释了你的复制品。若要解决此问题,请将join放到DamageStock。其所有列均不在“选择”或“位置”中;或者按select中的所有字段分组。是的,先生,我有许多相同产品批次id的损坏库存。您的查询很好,只是您不需要将损坏库存作为MASTER1中的MASTER1进行内部联接。AdjustmentId=DS.ItemAdjustmentId,这会导致感知到的记录重复