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

Откуда:
Сообщений: 203
1.Есть таблица ТОВАР:
товар1
товар2
товар3
...
товарN

2.Есть таблица ВАРИАНТ ТОВАРА:
товар1 вариантА
товар1 вариантБ
товар2 вариантА
товар2 вариантВ
....
товарN вариантN

как сделать запрос, чтобы были следующие данные:
товар, вариант
------------------
товар1
товар1 вариантА
товар1 вариантБ
товар2
товар2 вариантА
товар2 вариантВ
....
товарN
товарN вариантN

?
можно ли здесь обойтись без union all?
Спасибо!
23 сен 11, 11:08    [11324187]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с запросом  [new]
iljy
Member

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

легко
declare @t table (g varchar(100), v varchar(100))
insert @t values
('товар1', 'вариантА'),
('товар1', 'вариантБ'),
('товар2', 'вариантА'),
('товар2', 'вариантВ'),
('товарN', 'вариантN1'),
('товарN', 'вариантN2')

select g,v
from @t
group by g,v with rollup
having GROUPING(g) = 0
order by g,v
А зачем?
23 сен 11, 11:22    [11324318]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с запросом  [new]
Yury609
Member

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

в вашем примере - только одна таблица
а у меня - их две

зачем - нужно получить список товаров и вариантов товаров
23 сен 11, 11:34    [11324438]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104751
Yury609
в вашем примере - только одна таблица
а у меня - их две

А результат тем не менее один
23 сен 11, 11:36    [11324449]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с запросом  [new]
aleks2
Guest
1. Он, какбе, намекает, что не все товары первой таблицы перечислены во второй.
2. Нипонятны религиозноые предрассудки против UNION ALL.
23 сен 11, 11:38    [11324470]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с запросом  [new]
Yury609
Member

Откуда:
Сообщений: 203
Glory
Yury609
в вашем примере - только одна таблица
а у меня - их две

А результат тем не менее один


Glory, в моем случае вся информация о товарах находится в таблице товаров.
Поэтому все равно придется join-ить полученный вариант с товарами, чтобы получить дополнительную информацию

Хорошо, тогда поставлю вопрос по другому:
1.Есть таблица ТОВАР:
товар1 Описание1
товар2 Описание2
товар3 Описание3
...
товарN ОписаниеN

2.Есть таблица ВАРИАНТ ТОВАРА:
товар1 вариантА
товар1 вариантБ
товар2 вариантА
товар2 вариантВ
....
товарN вариантN

как сделать запрос, чтобы были следующие данные:
товар, описание, вариант
------------------
товар1 Описание1
товар1 Описание1 вариантА
товар1 Описание1 вариантБ
товар2 Описание2
товар2 Описание2 вариантА
товар2 Описание2 вариантВ
....
товарN ОписаниеN
товарN ОписаниеN вариантN

?
можно ли здесь обойтись без union all?
23 сен 11, 11:42    [11324508]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104751
Yury609
Поэтому все равно придется join-ить полученный вариант с товарами, чтобы получить дополнительную информацию

А join-ы тоже запрещны ?
23 сен 11, 11:45    [11324528]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с запросом  [new]
Yury609
Member

Откуда:
Сообщений: 203
2Glory: join разрешены

2aleks2: предрассудков против UNION ALL нет, этот вариант первым пришел на ум
просто поинтерисовался, есть ли другое решение
23 сен 11, 11:55    [11324640]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с запросом  [new]
Glory
Member

Откуда:
Сообщений: 104751
Yury609
2Glory: join разрешены

Ну так вам предложили вариант
23 сен 11, 11:56    [11324651]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с запросом  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
iljy,

Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Developer Edition on Windows NT 5.1 (Build 2600: Service Pack 2)


declare @t table (g varchar(100), v varchar(100))
insert @t values
('товар1', 'вариантА'),
('товар1', 'вариантБ'),
('товар2', 'вариантА'),
('товар2', 'вариантВ'),
('товарN', 'вариантN1'),
('товарN', 'вариантN2')
Msg 102, Level 15, State 1, Line 4
Incorrect syntax near ','.

Работает только так
insert @t VALUES('товар1', 'вариантА')
insert @t VALUES('товар1', 'вариантБ')
insert @t VALUES('товар2', 'вариантА')
insert @t VALUES('товар2', 'вариантВ')
insert @t VALUES('товарN', 'вариантN1')
insert @t VALUES('товарN', 'вариантN2')

Подскажи почему ошибка?
23 сен 11, 12:04    [11324729]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите с запросом  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
trew,

потомучто Иля скрипт для 2008 ап написал, а у вас 2005
23 сен 11, 12:10    [11324793]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить