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

Откуда:
Сообщений: 9
Подскажите, осваиваю азы SQL.
Есть две таблички в первой ключевые данные, во второй каждому значеню соответствует несколько значений (связь один к многим). Типа так:
Таб1 Таб2
К1 Р1
К1 Р2
К1 Р3
К2 Р4
К2 Р5
К3 Р6
К3 Р7

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

К1 Р1,Р2,Р3
К2 Р4,Р5
К3 Р6,Р7

Это можно сделать силами SQL?
1 июл 09, 19:41    [7365530]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SQL  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
V. Grabovsky,

способы зависят от версии сервера, а о ней-то ничего неизвестно!
А вообще, вот.
1 июл 09, 19:54    [7365580]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SQL  [new]
V. Grabovsky
Member

Откуда:
Сообщений: 9
SQL2005
1 июл 09, 22:23    [7365925]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SQL  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
Про две таблицы ничего не понял.
Предположим, что есть таблица T с двумя полями Таб1 и Таб2
Тогда
CREATE TABLE T(Таб1 char(2), Таб2 char(2));
INSERT T(Таб1, Таб2)
          SELECT 'К1','Р1'
UNION ALL SELECT 'К1','Р2'
UNION ALL SELECT 'К1','Р3'
UNION ALL SELECT 'К2','Р4'
UNION ALL SELECT 'К2','Р5'
UNION ALL SELECT 'К3','Р6'
UNION ALL SELECT 'К3','Р7';

SELECT T.Таб1, STUFF((SELECT ','+TT.Таб2 FROM T TT WHERE TT.Таб1=T.Таб1 ORDER BY TT.Таб2 FOR XML PATH('')),1,1,'')[Таб2]
FROM T
GROUP BY T.Таб1
ORDER BY T.Таб1;
1 июл 09, 22:42    [7365971]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SQL  [new]
V. Grabovsky
Member

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

Не заработал почему-то у меня этот способ. Но вроде задачу решил с помощью курсора.
2 июл 09, 13:54    [7368313]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SQL  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
V. Grabovsky
iap,

Не заработал почему-то у меня этот способ. Но вроде задачу решил с помощью курсора.
Вы удивительно лаконичны!
2 июл 09, 14:24    [7368504]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SQL  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
V. Grabovsky
iap,

Не заработал почему-то у меня этот способ. Но вроде задачу решил с помощью курсора.
Что возвращает
EXECUTE sp_dbcmptlevel N'ИмяБазы'
?
2 июл 09, 14:42    [7368662]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с SQL  [new]
V. Grabovsky
Member

Откуда:
Сообщений: 9
Сорри за молчание, завал был.
Заставил таки я работать ваш скрипт. Пока не понимаю как он работает, но работает.
Спасибо!
7 июл 09, 20:02    [7388646]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить