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

Откуда:
Сообщений: 34
Добрый день.
Необходимо вывести данные одной стракой твух таблиц имеющих свзяь один ко многим?

Привожу пример для понимания: Есть таблица сотрудников (Employee) и таблица телефонов (EmployeePhones)

Данные Employee:
Key Fam Nam Otch
1 Иванов Иван Иванович
2 Петров Иван Иванович
3 Сидоров Иван Иванович

Данные таблицы EmployeePhones:
Key EmployeeKey Phone
1 1 3548521
2 1 8922222222
3 1 3654145
4 2 5894111
5 2 8912222222
6 3 8916666666

Нужно получить результат
Fam Nam Otch Phone1 Phone2 Phone3
Иванов Иван Иванович 3548521 8922222222 3654145
Петров Иван Иванович 5894111 8912222222 Null
Сидоров Иван Иванович 8916666666 Null Null
25 янв 12, 11:39    [11966342]     Ответить | Цитировать Сообщить модератору
 Re: Отобразить данные одной стракой двух таблиц, связь один ко многим  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
iland66,

гляньте пример в ФАК
25 янв 12, 11:42    [11966361]     Ответить | Цитировать Сообщить модератору
 Re: Отобразить данные одной стракой двух таблиц, связь один ко многим  [new]
iland66
Member

Откуда:
Сообщений: 34
SomewhereSomehow,

спасибо, посмотрел, использую MSSQL 2000. Получается только черех хр. функцию можно сделать. Попробывать можно, но точно понимаю, что тормозить эта штука будет не подетски ((
25 янв 12, 11:48    [11966403]     Ответить | Цитировать Сообщить модератору
 Re: Отобразить данные одной стракой двух таблиц, связь один ко многим  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
SomewhereSomehow
iland66,

гляньте пример в ФАК
Ему ж не в строку, а в колонки надо.
Тут PIVOT или MAX(CASE WHEN THEN ELSE END) напрашиваются
25 янв 12, 11:58    [11966496]     Ответить | Цитировать Сообщить модератору
 Re: Отобразить данные одной стракой двух таблиц, связь один ко многим  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
iap
SomewhereSomehow
iland66,

гляньте пример в ФАК
Ему ж не в строку, а в колонки надо.
Тут PIVOT или MAX(CASE WHEN THEN ELSE END) напрашиваются
Собственно говоря, раз 2000-й, то PIVOT отпадает
25 янв 12, 11:59    [11966504]     Ответить | Цитировать Сообщить модератору
 Re: Отобразить данные одной стракой двух таблиц, связь один ко многим  [new]
iland66
Member

Откуда:
Сообщений: 34
iap,

если учесть тот факт, что заранее неизвестно сколько телефонов, то этот вариант тоже отпадает... получаеться только внутрях приложения это делать...
25 янв 12, 12:09    [11966614]     Ответить | Цитировать Сообщить модератору
 Re: Отобразить данные одной стракой двух таблиц, связь один ко многим  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
iland66
iap,

если учесть тот факт, что заранее неизвестно сколько телефонов, то этот вариант тоже отпадает... получаеться только внутрях приложения это делать...
Если предположить, что максимальное количество телефонов - 100,
то можно сделать 100 колонок, последние из которых будут чаще всего пустыми.
Иначе - динамический SQL.
25 янв 12, 12:12    [11966642]     Ответить | Цитировать Сообщить модератору
 Re: Отобразить данные одной стракой двух таблиц, связь один ко многим  [new]
iland66
Member

Откуда:
Сообщений: 34
iap,

спс натолкнул на идею, действительно кто мешает сделать динамический SQL.
25 янв 12, 12:30    [11966819]     Ответить | Цитировать Сообщить модератору
 Re: Отобразить данные одной стракой двух таблиц, связь один ко многим  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
iland66, а обязательно каждый телефон отдельной колонкой делать? может, достаточно будет перечислить в одной через разделитель?
25 янв 12, 12:31    [11966831]     Ответить | Цитировать Сообщить модератору
 Re: Отобразить данные одной стракой двух таблиц, связь один ко многим  [new]
iland66
Member

Откуда:
Сообщений: 34
Shakill,

Да, телефоны в разных колонках... такую фичу можно в орокле забахать... но вот с MSSQL тут ступор...
Решение я уже сформулировал (динамический запрос), сижу думаю, как будет красивее сделать ))))
25 янв 12, 12:40    [11966913]     Ответить | Цитировать Сообщить модератору
 Re: Отобразить данные одной стракой двух таблиц, связь один ко многим  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
iap
Ему ж не в строку, а в колонки надо.
Тут PIVOT или MAX(CASE WHEN THEN ELSE END) напрашиваются

А, да, не заметил подписи разных колонок.

iland66,
видимо придется сначала вычислить максимальное кол-во телефонов на одного сотрудника, в соответствии с ним динамически сгенерировать соотв.число колонок, потом пронумеровать телефоны в рамках каждого сотрудника и далее уже case-oм раскидать все это по соотв.колонкам...вопрос красоты всех этих действий в 2000-м под сомнением.
25 янв 12, 12:51    [11967032]     Ответить | Цитировать Сообщить модератору
 Re: Отобразить данные одной стракой двух таблиц, связь один ко многим  [new]
AlexAlexAlexAlex
Guest
iland66
Shakill,

Да, телефоны в разных колонках... такую фичу можно в орокле забахать... но вот с MSSQL тут ступор...
Решение я уже сформулировал (динамический запрос), сижу думаю, как будет красивее сделать ))))


Чем все закончилось, не покажете? )
13 май 12, 01:14    [12545137]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить