我想通過連接三個表來創建視圖。加入多個表以創建視圖
該模式有點複雜,所以爲了簡單起見,我只提及問題所需的表和列。
有一個表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
?
爲什麼不'FROM STOCKHistory LEFT JOIN上....銷售LEFT JOIN上......'這樣,你總是有從stockhistory的所有記錄,只有那些在購買相關銷售還是購買?現在,如果您對銷售或採購施加限制......這些限制必須作爲AND條件加入到JOIN中,否則您將打破左連接,使其充當內連接。左連接右側的表的限制條件必須放在連接上,而不是放在where子句中否則您將否定左連接! – xQbert