【问题标题】:SQL Multiple INNER JOINS In One Select-StatementSQL 多个 INNER JOINS 在一个选择语句中
【发布时间】:2018-02-08 10:42:37
【问题描述】:

我将此代码用于库存管理系统,我想从四个表中检索手头的库存。我已经尝试了两个表并得到了我需要的准确结果。请帮助我。

表架构

Productmastertb

prod_id,
Product_name

salesdetailstb

sales_id,
Prod_id,
Prod_qty

estimatedetailstb

est_id,
Prod_id,
Prod_qty

Purchasedetailstb

est_id,
Prod_id,
Prod_qty

查询示例(工作):

SELECT
    productmastertb.prod_id, 
    productmastertb.prod_name, 
    sum(estimatedetailstd.prod_qty) as Est_qty 
FROM 
    productmaster 
INNER JOIN 
    estimatedetailstb ON productmastertb.prodid = estimatedetails.prodid 
GROUP BY 
    productmastertb.prod_id, productmastertb.prod_name

同样,我必须检索 salesdetailstb.qty 和 purchaseetailstb.qty 的总和

提前致谢

【问题讨论】:

    标签: sql vb.net ms-access


    【解决方案1】:

    您想要汇总不同的“维度”——即表格。一种好的方法是在执行JOINs 之前聚合。或者使用子查询。这是后一种方法:

    SELECT pm.prod_id, pm.prod_name, 
           (SELECT SUM(ed.prod_qty)
            FROM estimatedetailstb as ed
            WHERE ed.prodid = ed.prodidas
           ) as Est_qty,
           (SELECT SUM(sd.prod_qty)
            FROM salesdetailstb as sd
            WHERE sd.prodid = pm.prodidas
           ) as Sales_qty,
           (SELECT SUM(pd.prod_qty)
            FROM purchasedetailstb as pd
            WHERE pd.prodid = pm.prodid
           ) as Sales_qty
    FROM productmaster pm;
    

    这将为您提供所有产品,甚至包括一张或多张其他表格中缺少的产品。

    【讨论】:

    • 哇!太好了,得到了我需要的准确结果,非常感谢:)
    【解决方案2】:

    您可以添加多个联接。

    SELECT t1.id, t4.name, count(t4.name) 
    FROM Table1 AS t1
        INNER JOIN Table2 AS t2 -- the AS statement renames the table within
                                -- this query to t2. Columns from this table can be used 
                                -- as t2.columnname. This needs to be done when you have 
                                -- columns with the same name in different tables.
            ON t1.id = t2.id
        INNER JOIN Table3 as t3
            ON t1.id = t3.id
        INNER JOIN Table4 as t4
            ON t3.name = t4.name
    GROUP BY t1.id, t4.name 
    

    【讨论】:

    • 不工作。在查询表达式中出现相同的错误“SYNTAX ERROR (Missing operator)”
    猜你喜欢
    • 2015-09-04
    • 1970-01-01
    • 2022-01-09
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多