如何获得 INNER Join 价值
Posted
技术标签:
【中文标题】如何获得 INNER Join 价值【英文标题】:How to get INNER Join Value 【发布时间】: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 *
,然后使用您的眼球找出哪些列实际包含不同的数据。这应该会通知您哪些JOIN
s 正在生成多行。
【参考方案1】:
您没有连接到 Product_Master 表的条件,因此您将从该表中获取所有行。也就是说,所有其他行的所有 product_master 行。那应该解释它。尝试将连接条件添加到与其相关的表中。
INNER JOIN Product_Master AS PM
【讨论】:
【参考方案2】:为什么下面的语句是空的?有什么意义吗??
不要使用 Purchase_Order_Details 而是先尝试使用 Product_Master
INNER JOIN Product_Master AS PM
【讨论】:
我是通过系统自动构建的,不知道为什么会这样,你能解释一下吗? 你是如何构建它的?在管理工作室?也许数据库中没有定义外键。然后你必须手动添加连接条件。以上是关于如何获得 INNER Join 价值的主要内容,如果未能解决你的问题,请参考以下文章