我想通过连接三个表来创建一个视图。
架构有点复杂,因此为了简单起见,我将仅提及问题所需的表和列。
有一个包含两列的表sales
:
SaleID(pkey),
Buyer,
Amount.
第二个表是purchases
,有两列:
PurchaseID(pkey),
Seller,
Amount.
我有第三张表stockhistory
,可以跟踪物料的流动情况。
该表的架构是:
Date,
PurchaseID(fkey to column PurchaseID, Purchases Table),
SalesID(fkey to column SalesID, Sales Table),
Amount(calculated amount inserted here).
现在,每个stockhistory
记录都对应于Purchases
表或Sales
表的记录,但不是两者都记录,或者都不记录。
我有一个约束:
([salesid] IS NULL AND [purchaseid] IS NOT NULL OR [salesid] IS NOT NULL AND
[purchaseid] IS NULL)
现在,在视图StockReport
中,我试图从stockhistory
表中提取所有记录,并希望显示买方或卖方的名称。
我曾尝试编写以下行的SQL:
SELECT StockHistory.date
, StockHistory.purchaseid
, StockHistory.salesid
, Purchases.seller
, Sales.buyer
WHERE StockHistory.purchaseid = Purchases.purchaseid
OR StockHistory.salesid = Sales.salesid
我如何对LEFT JOIN
执行相同操作?
答案 0 :(得分:3)
您可以使用以下查询
SELECT
SH.date,
SH.purchaseid,
SH.salesid,
P.seller,
S.buyer
FROM stockhistory SH
LEFT JOIN Purchases P on P.PurchaseID=SH.PurchaseID
LEFT JOIN Sales S on S.salesid=SH.salesid