2015-08-20 1 views
-7

У меня есть несколько подзапросов в моей SQLПреобразование нескольких вложенных запросов к на присоединиться к

SELECT *, 
(SELECT Col1 FROM MYTABLE2 WHERE SAME) AS Col1, 
(SELECT Col2 FROM MYTABLE2 WHERE SAME) AS Col2, 
(SELECT Col3 FROM MYTABLE2 WHERE SAME) AS Col3, 
(SELECT Col4 FROM MYTABLE2 WHERE SAME) AS Col4, 
FROM MYTABLE1 WHERE XXX 

Как я могу преобразовать это в одном JOIN? Sub Query - это то же самое, что и имя столбца Select.

+3

Как связаны эти две таблицы? Что делают предложения where? Являются ли те же условия в subqs, что и внешние q? – jpw

+0

Можете вы раскрыть 'SAME' фактический код, используемый в вашем запросе? –

+0

Подпрограмма - это то же самое, что и только для столбца. @MarkBannister – user960567

ответ

1
SELECT MYTABLE1.*, MYTABLE2.* 
    FROM MYTABLE1 
    LEFT OUTER JOIN MYTABLE2 
    ON same 
WHERE XXX 

ON не должен связать две таблицы
Это больше похоже на фильтрованной перекрестного соединения

+0

ВНУТРЕННЕЕ ИЛИ ВНЕШНЕЕ СОЕДИНЕНИЕ – user960567

+0

Либо. Зависит от того, чего вы хотите. Если же он не возвращает строк, и вы хотите, чтобы MYTABLE1 затем был внешним. – Paparazzi

0

Возможно, вам следует использовать UNION, а не JOIN?

+2

Это должен быть комментарий. – Wanderer

+0

Да, но у меня недостаточно репутации для комментариев:/ –

0
SELECT t1.*, t2.col1, t2.col2, t2.col3, t2.col4 
FROM MYTABLE1 T1 
INNER JOIN MYTABLE2 T2 
ON T1.somecol = T2.somecol --replace with appropriate join condition 
WHERE XXX 
and --same conditions as previous (WHERE SAME) 

Это то, что вы бы сделали. Вы должны внести необходимые изменения в соответствии с комментариями в строке.

+0

что делать, если T2 не соответствует – user960567

+0

Что значит точно? –

+0

Что делать, если T1.somecol <> T2.somecol – user960567

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