2017-03-14 30 views
0

私はFULL OUTER JOINを含むクエリを持っています。私はそれをAccessで実装したいと思います。アクセスの完全外部結合

これはアクセスでUNIONクエリを使用して行うことができますが、私は非常に分かりません。私はいくつかの記事を読んだが、それを理解していなかった。これはアクセスで書き換えたいSQL Serverクエリです。それがどのように機能するかを説明することで理解してください。

SELECT tblPurchaseMain.Purchase_Date, tblPurchaseDetail.Quantity, tblPurchaseDetail.Rate, 
tblProduct.Product_Name, tblProductCategory.Product_Category_Name, tblSupplier.Supplier_Name, 
tblSupplier.Supplier_Address, tblSupplier.Supplier_Phone_No, tblCompany.Company_Name, 
tblPurchaseDetail.Amount, tblPurchaseDetail.Discount, tblPurchaseMain.TotalAmount, 
tblPurchaseMain.Service_Tax, tblPurchaseDetail.TaxableAmount, 
tblPurchaseDetail.Purchase_Main_ID, tblPurchaseDetail.VAT, 
tblPurchaseMain.Purchase_Other_Charges 
FROM 
tblPurchaseDetail 
INNER JOIN 
tblPurchaseMain ON tblPurchaseDetail.Purchase_Main_ID = tblPurchaseMain.Purchase_Main_ID 
INNER JOIN 
tblProduct ON tblPurchaseDetail.Product_ID = tblProduct.Product_ID 
INNER JOIN 
tblProductCategory ON tblProduct.Product_Category_ID = tblProductCategory.Product_Category_ID 
INNER JOIN 
tblSupplier ON tblPurchaseMain.Supplier_ID = tblSupplier.Supplier_ID 
FULL OUTER JOIN 
tblCompany ON tblPurchaseMain.Company_ID = tblCompany.Company_ID 
WHERE 
(tblPurchaseMain.Purchase_Main_ID =" & _PurchaseBillNo & ") 
AND 
(tblPurchaseMain.Company_ID = " & CompanyID & ")". 

ありがとうございます。

+0

どのタイプのJOINも、UNIONとは何の共通点もありません。まったく異なっています。どちらももう一方のことを達成することはできません。だから何を達成したいのですか? – June7

+0

MS-Accessで上記のクエリに基づく結果が必要です。上記のクエリはSQL Server上で正常に動作しますが、FULL OUTER JOINを使用するためにアクセスに失敗します – Mahadev

+0

[アクセスで完全外部結合クエリを作成する方法](https://stackoverflow.com/questions/19615177/how- DO-i-write-a-full-outer-join-query-in-access) –

答えて

0

レビューFullOuterJoin in Accessただし、必要なテーブルの数が増えているため、要件がはるかに複雑になっているようです。おそらくこれを打破する必要があります。 Purchaseテーブル、Productテーブル、およびSupplierテーブルに対してクエリを実行します。次に、Company表でLEFTおよびRIGHT照会のUNIONでその照会を使用します。

+0

ありがとうございました。リンクが正しく貼り付けられていません。あなたが私に言った解決策を知っています。その質問に上記の方法を適用することで、その仕組みを理解したいと思っています。 – Mahadev

2

は、あなたが、その後LEFT JOINRIGHT JOINの労働組合を実行することによって会社テーブルとFULL OUTER JOINで使用するすべてのINNER JOINのテーブルを保持している仲介保存されたクエリを使用することを検討してください。

MS Access SQLは、かっこ内にあるJOIN節のテーブルペアをラップするという厳しい要件を維持しているため、ネストされた結合(下記参照)が可能です。 MSAccess.exe GUIプログラム。また、構文のconcisionには表の別名を使用することを検討してください。

内部クエリ

SELECT m.Purchase_Date, d.Quantity, d.Rate, p.Product_Name, c.Product_Category_Name, 
     s.Supplier_Name, s.Supplier_Address, s.Supplier_Phone_No, m.Company_ID, d.Amount, 
     d.Discount, m.TotalAmount, m.Service_Tax, d.TaxableAmount, d.Purchase_Main_ID, 
     d.VAT, m.Purchase_Other_Charges 
FROM (((PURCHASE_MAIN m INNER JOIN PURCHASE_DETAIL d 
     ON m.Purchase_Main_ID = d.Purchase_Main_ID) 
INNER JOIN PRODUCT p ON d.Product_ID = p.Product_ID) 
INNER JOIN PRODUCT_CATEGORY c ON p.Product_Category_ID = c.Product_Category_ID) 
INNER JOIN SUPPLIER s ON m.Supplier_ID = s.Supplier_ID; 

Inner Query Diagram

外側のクエリ(ここに見られるように、かっこは、テーブルの唯一のペアのために必要とされていない)

SELECT q.Purchase_Date, q.Quantity, q.Rate, q.Product_Name, q.Product_Category_Name, 
     q.Supplier_Name, q.Supplier_Address, q.Supplier_Phone_No, c.Company_Name, q.Amount, 
     q.Discount, q.TotalAmount, q.Service_Tax, q.TaxableAmount, q.Purchase_Main_ID, q.VAT, 
     q.Purchase_Other_Charges 
FROM PRODUCT_INNERQ AS q 
LEFT JOIN COMPANY AS c ON q.Company_ID = c.Company_ID 

UNION ALL 

SELECT q.Purchase_Date, q.Quantity, q.Rate, q.Product_Name, q.Product_Category_Name, 
     q.Supplier_Name, q.Supplier_Address, q.Supplier_Phone_No, c.Company_Name, q.Amount, 
     q.Discount, q.TotalAmount, q.Service_Tax, q.TaxableAmount, q.Purchase_Main_ID, q.VAT, 
     q.Purchase_Other_Charges 
FROM PRODUCT_INNERQ AS q 
RIGHT JOIN COMPANY AS c ON q.Company_ID = c.Company_ID 
WHERE (((q.Company_ID) IS Null)); 

Outer Query Diagram

注:MS AccessのUNIONクエリの図はありません。上記の2つのセットは、個別に実行されるSELECTステートメントです。矢印の方向に注意してください。

関連する問題