【问题标题】:How to get INNER Join Value如何获得 INNER Join 价值
【发布时间】:2014-03-01 13:18:04
【问题描述】:

我有三个表 PurchaseDetails、SalesDetails 和 ProductMaster。 我有一个产品在那里 master P0001

如何在sql2008中加入这个表来获取损益报告

我写了这段代码我不明白为什么它显示了四次......

SELECT PM.product_id,
       PM.product_name,
       PM.company_name,
       PM.opening_stock,

  (SELECT SUM(CAST(qty AS decimal(18, 0))) AS [Purchase Stock ]
   FROM Purchase_Order_Details) AS [Purchase Stock ],
       CAST(CONVERT(decimal(18, 0), PM.opening_stock) +
              (SELECT SUM(CAST(qty AS decimal(18, 0))) AS [Purchase Stock ]
               FROM Purchase_Order_Details AS Purchase_Order_Details_1) AS decimal(18, 0)) AS [Total Purchase Stock],
       CAST(CONVERT(decimal(18, 2), PM.opening_stock) * CONVERT(decimal(18, 2), PM.rate) + CONVERT(decimal(18, 2), PO.net_amount) AS decimal(18, 2)) AS [Total Purchase Cost],

  (SELECT SUM(CAST(qty AS decimal(18, 0))) AS [Purchase Stock ]
   FROM Order_Details) AS [Sales Stock ], PM.closing_stock AS [Closing Stock], O.net_amount AS [Sales Cost]
FROM Purchase_Order_Details AS POD
INNER JOIN Purchase_Order AS PO ON POD.pdoc_id = PO.pdoc_id
INNER JOIN Product_Master AS PM
INNER JOIN Order_Details AS OD ON PM.product_id = OD.product_id
INNER JOIN Ordered AS O ON OD.doc_id = O.doc_id ON POD.product_id = PM.product_id

输出

谁能解决这个问题?

【问题讨论】:

  • 基本 SQL 调试 - 将您的 SELECT 子句更改为 SELECT *,然后使用您的眼球找出哪些列实际包含不同的数据。这应该会通知您哪些JOINs 正在生成多行。

标签: sql sql-server sql-server-2008 sql-server-2008-r2 inner-join


【解决方案1】:

您没有连接到 Product_Master 表的条件,因此您将从该表中获取所有行。也就是说,所有其他行的所有 product_master 行。那应该解释它。尝试将连接条件添加到与其相关的表中。

    INNER JOIN Product_Master AS PM

【讨论】:

    【解决方案2】:

    为什么下面的语句是空的?有什么意义吗??

    不要使用 Purchase_Order_Details 而是先尝试使用 Product_Master

    INNER JOIN Product_Master AS PM
    

    【讨论】:

    • 我是通过系统自动构建的,不知道为什么会这样,你能解释一下吗?
    • 你是如何构建它的?在管理工作室?也许数据库中没有定义外键。然后你必须手动添加连接条件。
    猜你喜欢
    • 2019-05-05
    • 2013-02-07
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 2019-10-09
    • 2013-08-06
    • 2020-11-03
    相关资源
    最近更新 更多