0

質問があります。このようにシミュレートされFULL OUTER JOINた:

SELECT * FROM SupplierInfo
LEFT JOIN MajorEquipment ON SupplierInfo.SupplierId = MajorEquipment.MEId
UNION
SELECT * FROM SupplierInfo
RIGHT JOIN MajorEquipment ON SupplierInfo.SupplierId = MajorEquipment.MEId;

ただし、これはかなり大きな選択を引き出し、必要なのは 2 ~ 3 つのフィールドだけです:SupplierPartNoMajorEquipmentNo. 私はこのようなことを試しました:

SELECT SupplierPartNo, MajorEquipmentNo FROM(
  SELECT * FROM SupplierInfo
  LEFT JOIN MajorEquipment ON SupplierInfo.SupplierId = MajorEquipment.MEId
  UNION
  SELECT * FROM SupplierInfo
  RIGHT JOIN MajorEquipment ON SupplierInfo.SupplierId = MajorEquipment.MEId
);

しかし、それは私にエラーを与えますEvery derived table must have its own alias: SELECT SupplierPartNo, MajorEquipmentNo FROM( SELECT....

SELECT前の選択からどのように行うことができますか?

4

1 に答える 1

1

データセットからこれら 2 つの特定のフィールドが必要な場合は、次のように直接クエリを実行できます。

SELECT SupplierInfo.SupplierPartNo, MajorEquipment.MajorEquipmentNo 
FROM SupplierInfo
LEFT JOIN MajorEquipment ON SupplierInfo.SupplierId = MajorEquipment.MEId
UNION
SELECT SupplierInfo.SupplierPartNo, MajorEquipment.MajorEquipmentNo 
FROM SupplierInfo
RIGHT JOIN MajorEquipment ON SupplierInfo.SupplierId = MajorEquipment.MEId

それでも派生テーブルのアプローチを使用したい場合 (パフォーマンスのために推奨しないことをお勧めします)、次のようにクエリを実行できます。

SELECT a.SupplierPartNo, a.MajorEquipmentNo FROM (
SELECT * FROM SupplierInfo
LEFT JOIN MajorEquipment ON SupplierInfo.SupplierId = MajorEquipment.MEId
UNION
SELECT * FROM SupplierInfo
RIGHT JOIN MajorEquipment ON SupplierInfo.SupplierId = MajorEquipment.MEId
) a
于 2014-03-21T05:33:08.573 に答える