2014-02-10 6 views
2

После запроса работает:Объединить две анонимные таблицы друг с другом

select foo.g from (select 'hello' as g) as foo 

и этот запрос работает как хорошо:

select bla.x from (select 'world' as x) as bla 

но это один не делает:

select * from (select foo.g from (select 'hello' as g) as foo) join (select bla.x from (select 'world' as x) as bla) 

Я получаю следующее сообщение об ошибке:

Msg 156, Level 15, State 1, Line 1 
Incorrect syntax near the keyword 'join'. 

Почему ошибка? Можно ли каким-то образом присоединиться к этим таблицам?

ответ

2

Дайте имена вам таблицы, используя As <temp_table_name> и вам необходимо указать столбец две таблицы соединяющую ON. Поскольку нет столбца, чтобы присоединиться ON я использовал тавтологию (который всегда будет приводить к True), предполагая, что результат, который вы ожидаете это: привет, мир в двух колонках

Здесь переставить запрос:

select * 
from 
(
    select foo.g 
    from 
    (
     select 'hello' as g 
    ) as foo 
) As t1 
inner join 
(
    select bla.x 
    from (select 'world' as x) as bla 
) As t2 ON 1 = 1 
2

Вам необходимо указать псевдонимы для ваших таблиц. Ниже код работает

select * from (select foo.g from (select 'hello' as g) as foo) T1 
join (select bla.x from (select 'world' as x) as bla) T2 on t1.g=t2.x 
1

Ошибка была связана с отсутствием ключевого слова ON. Предложение ON работает как предложение WHERE, и здесь вы добавляете свой фильтр соединения.

Его непосредственно не связаны с отсутствием имен и псевдонимами на таблицы и столбцы, но если вы не называете ваши столбцы и таблицы оговорка ON не может знать, что вы хотите, как результат и как вы хотите объединить таблицы на

+0

, но, например, вы можете сделать это в postgres: 'select * from foo join bar', где foo и bar - таблицы. – reox

+1

Мне не хватает знаний о postgres, но уникальный способ объединения таблиц без фильтра - это перекрестное соединение (декартово произведение между строками строк). Кажется, это так. – jean

+0

ах я вижу! поэтому номенклатура просто отличается – reox

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