3つのテーブルを結合してビューを作成したいとします。複数のテーブルを結合してビューを作成する
スキーマは少し複雑ですので、わかりやすくするために、問題に必要なテーブルと列についてのみ説明します。
2列のテーブルsales
がある:第二の表は、2列のpurchases
ある
SaleID(pkey),
Buyer,
Amount.
:
PurchaseID(pkey),
Seller,
Amount.
Iは、材料の流れを追跡する第3のテーブルstockhistory
を有します。 そのテーブルのスキーマがある:
Date,
PurchaseID(fkey to column PurchaseID, Purchases Table),
SalesID(fkey to column SalesID, Sales Table),
Amount(calculated amount inserted here).
、stockhistory
レコードの各々は、Purchases
テーブルのレコードまたはSales
テーブルのいずれかに対応し、両方ではなくまたはnone。 私はその目的のために制約があります。
([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
と同じことを行うことができますどのように?
を使用することができます販売または購入のどちらか?今では、売上や購入に制限を課す場合...それらの制限は、ジョインにANDジョイントする必要があります。それ以外の場合は、左ジョイントを壊して、内部ジョインのように動作させます。左結合の右側にあるテーブルの制限基準は、where節にない結合に置く必要があります。そうしないと、左結合を否定できません。 – xQbert