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

Откуда:
Сообщений: 38
Привет всем.

Есть такие две таблицы main и subs
id name sub account
1 new1 sub1 test
2 new1 sub1 test

date subname subaccount value
20140130 sub1 test 10,50
20140131 sub1 test 20,50

Не смотрите на то что в первой таблице одинаковые записи, это только часть реальной таблицы, я просто выбрал нужные поля.
Теперь если выполнить join запрос
SELECT main.name, subs.value as val from subs INNER JOIN main ON subs.subname=main.sub AND subs.subaccount=main.account
получим такой результат

name val
new1 10.50
new1 20.50
new1 10.50
new1 20.50

В чем проблема - дублируются записи для join операции. по две из таблицы subs для таблицы main. Как тут можно было бы добавить условие, чтоб для одинаковых записей из таблицы main не создавались дубликаты.
Благодарю за помощь.
5 фев 14, 21:53    [15525327]     Ответить | Цитировать Сообщить модератору
 Re: Дубликаты для Join запроса.  [new]
sdet
Member

Откуда:
Сообщений: 463
loggik,
SELECT distinct main.name, subs.value as val from subs...
5 фев 14, 22:02    [15525348]     Ответить | Цитировать Сообщить модератору
 Re: Дубликаты для Join запроса.  [new]
loggik
Member

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

distinct к сожалению не подходит, т.к. потом нужно сгруппировать и получить сумму в value
т.е. если сделать
SELECT distinct main.name, sum(value) as val from subs INNER JOIN main ON subs.subname=main.sub AND subs.subaccount=main.account
group by name
получится
new1 62.00

а нужно
new1 31.00
5 фев 14, 22:11    [15525388]     Ответить | Цитировать Сообщить модератору
 Re: Дубликаты для Join запроса.  [new]
sdet
Member

Откуда:
Сообщений: 463
loggik
sdet,

distinct к сожалению не подходит, т.к. потом нужно сгруппировать и получить сумму в value

Чего вы условия меняете на лету
Пишите сразу полный запрос и что получить
5 фев 14, 22:27    [15525428]     Ответить | Цитировать Сообщить модератору
 Re: Дубликаты для Join запроса.  [new]
loggik
Member

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

условия не менялись, просто изначально старался упростить изложение. distinct выяснил, не подходит.
5 фев 14, 22:41    [15525472]     Ответить | Цитировать Сообщить модератору
 Re: Дубликаты для Join запроса.  [new]
sdet
Member

Откуда:
Сообщений: 463
loggik
sdet,

условия не менялись, просто изначально старался упростить изложение. distinct выяснил, не подходит.

Т.е для вас запросы с суммой и группировкой, то же самое что без?
Используйте row_number()
5 фев 14, 22:46    [15525485]     Ответить | Цитировать Сообщить модератору
 Re: Дубликаты для Join запроса.  [new]
loggik
Member

Откуда:
Сообщений: 38
sdet
Используйте row_number()


каким образом?
5 фев 14, 23:03    [15525571]     Ответить | Цитировать Сообщить модератору
 Re: Дубликаты для Join запроса.  [new]
Glory
Member

Откуда:
Сообщений: 104751
loggik
distinct к сожалению не подходит,

Подходит. Если делать его сначала для таблицы main. И только потом присоединять таблицу subs
5 фев 14, 23:53    [15525716]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить