2014-03-21 2 views
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 поля: 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 
+0

Отлично! Большое спасибо: D. Принять как можно скорее – Ben

Смежные вопросы