Вложенный выбор... из полного внешнего смоделированного соединения

Итак, у меня есть запрос; моделируемый 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 поля: SupplierPartNo а также MajorEquipmentNo, Я пробовал что-то вроде этого:

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 из предыдущего выбора?

1 ответ

Решение

Если вам нужны эти два конкретных поля из вашего набора данных, вы можете напрямую запросить это так:

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
Другие вопросы по тегам