Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Проблемы с выборкой данных  [new]
solitary
Member

Откуда:
Сообщений: 16
Здравствуйте!
Очень прошу Вашей помощи в таком вопросе:
У меня есть две таблицы: главная и подчиненная.
#table1(id, col1_1, col1_2, col1_3)
#table2(id, posid, col2_1, col2_2, col2_3)

В #table2 может содержаться несколько позиций, соответствующих конкретному id из главной таблицы.
Задача состоит в том, чтобы выбрать все данные из этих двух таблиц, но не в стандартном виде, а в виде:
id, col1_1, col1_2, col1_3, posid1, col2_1, col2_2, col2_3, posid2, col2_1, col2_2, col2_3...

Т.е. должна вернуться плоская таблица, содержащая все значения в данных таблицах, но выведенная в одну строку... Можно ли это как-то сделать?
Извиняюсь за невразумительное объяснение, надеюсь, Вы поймете, что я имела ввиду...
Очень надеюсь на Вашу помощь! Спасибо!
18 сен 12, 00:32    [13179643]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с выборкой данных  [new]
Читатель неместный
Guest
этого в SQL Server невозможно сделать!
.. и думаю что местные старожилы согласятся с этим.
18 сен 12, 07:19    [13179865]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с выборкой данных  [new]
skorpk
Member

Откуда: Волгоград
Сообщений: 276
FAQ
18 сен 12, 07:39    [13179882]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с выборкой данных  [new]
Glory
Member

Откуда:
Сообщений: 104751
solitary
id, col1_1, col1_2, col1_3, posid1, col2_1, col2_2, col2_3, posid2, col2_1, col2_2, col2_3...


Т.е. должна вернуться плоская таблица, содержащая все значения в данных таблицах, но выведенная в одну строку...

Т.е. 100500 полей должно получиться что ли ?
18 сен 12, 09:17    [13180088]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с выборкой данных  [new]
Читатель неместный
Guest
Читатель неместный
этого в SQL Server невозможно сделать!
Извините, думал что нужен просто join
Чаще бывает достаточно выбирать скажем трех дочек
select t.*, t1.*,t2.*,t3.*
from #table1 t
left join #table2 t1 on t.id = t1.id and t1.posid = 1
left join #table2 t2 on t.id = t2.id and t2.posid = 2
left join #table2 t3 on t.id = t3.id and t3.posid = 3
если posid у дочки заполнены "порядочно" - то есть 1,2..
Иначе дочек можно оформить в подзапрос с row_number()

Если все дочки нужны - то динамический запрос нужно соорудить
18 сен 12, 10:32    [13180461]     Ответить | Цитировать Сообщить модератору
 Re: Проблемы с выборкой данных  [new]
solitary
Member

Откуда:
Сообщений: 16
Да, я и решила эту проблему с помощью LEFT JOIN. Спасибо большое за ответ!
18 сен 12, 14:39    [13182756]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить