为什么左连接sql查询结果在MS Access数据库中不匹配

问题描述 投票:0回答:1

为什么左连接SQL查询结果在MS Access数据库中不匹配?也许我写的SQL代码有问题?

因此,如果有答案,那么我不想使用 MS Access 中的函数,因为我想使用 VB.Net 的 SQL。

请指导我。

谢谢

桌子

StocksinDetail

没有 Invno 代码产品 条形码 颜色代码 尺寸 颜色名称 数量
1 ITO-00004 测试1000 03-22164010 - - - 50
1 ITO-00001 测试1000 03-22164010 - S - 50
2 ITO-00001 测试1000 03-22164010 BHTF001 XL 普提赫 50
3 ITO-00001 测试1000 03-22164010 BHTF002 M - 50
4 ITO-00004 测试1001 03-22164010 BHTF001 - 普提赫 50
1 ITO-00005 测试1000 03-22164010 - - - 50

桌子:

StocksoutDetail

没有 Invno 代码产品 条形码 颜色代码 尺寸 颜色名称 数量
1 ITO-00001 测试1000 03-22164010 - S - 1
2 ITO-00001 测试1000 03-22164010 BHTF001 XL 普提赫 1

桌子

Stocksfinal

代码产品 条形码 颜色代码 尺寸 颜色名称 数量
测试1000 03-22164010 - - - 50
测试1000 03-22164010 - - - 50
测试1000 03-22164010 - S - 50
测试1000 03-22164010 BHTF001 XL 普提赫 50
测试1000 03-22164010 BHTF002 M - 50
测试1001 03-22164010 BHTF001 - 普提赫 50

想要的结果

代码产品 条形码 颜色代码 尺寸 颜色名称 数量
测试1000 03-22164010 - - - 100
测试1000 03-22164010 - S - 50
测试1000 03-22164010 BHTF001 XL 普提赫 50
测试1000 03-22164010 BHTF002 M - 50
测试1001 03-22164010 BHTF001 - 普提赫 50
SELECT  
    t1.CodeProduct, t1.Barcode, t1.Colorcode, t1.Size, 
    t1.ColorName,
    IIf(IsNull(t1.Qty),'0',t1.Qty)-IIf(IsNull(t2.Qty),'0',t2.Qty) AS QTY_STOCK,
    t1.Qty AS QTY_STOCKIN, t2.Qty AS QTY_STOCKOUT
FROM
    StocksinDetail AS t1
LEFT JOIN 
    StocksoutDetail AS t2 ON (t1.Size = t2.Size)
                          AND (t1.Colorcode = t2.Colorcode)
                          AND (t1.Barcode = t2.Barcode)
                          AND (t1.CodeProduct = t2.CodeProduct);
sql ms-access left-join ms-access-2010
1个回答
0
投票

构建每个明细表的聚合查询,然后连接这些查询。

考虑:

查询1:SumIN

SELECT CodeProduct, Barcode, Colorcode, Colorname, Size, Sum(Qty) AS SumINQty
FROM StocksinDetail
GROUP BY CodeProduct, Barcode, Colorcode, Colorname, Size;

查询2:SumOUT

SELECT CodeProduct, Barcode, Colorcode, Size, Sum(Qty) AS SumOUTQty
FROM StocksoutDetail
GROUP BY CodeProduct, Barcode, Colorcode, Size;

查询3:

SELECT SumIN.*, SumOUT.SumOUTQty
FROM SumIN LEFT JOIN SumOUT ON (SumIN.Size = SumOUT.Size) AND (SumIN.Colorcode = SumOUT.Colorcode) AND (SumIN.Barcode = SumOUT.Barcode) AND (SumIN.CodeProduct = SumOUT.CodeProduct);
代码产品 条形码 颜色代码 颜色名称 尺寸 总INQty 总输出数量
测试1000 03-22164010 - - - 100
测试1000 03-22164010 - - S 50 1
测试1000 03-22164010 BHTF001 普提赫 XL 50 1
测试1000 03-22164010 BHTF002 - M 50
测试1001 03-22164010 BHTF001 普提赫 - 50
© www.soinside.com 2019 - 2024. All rights reserved.