Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Скложить таблицы / 16 сообщений из 16, страница 1 из 1
25.05.2011, 10:33
    #37277979
ilovemylol
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скложить таблицы
Заранее извиняюсь если такая тема была, однако я честно искал но не нашел :(

Есть 3ри одинаковые sql таблицы. Вида продукт, количество.
Нужно из таблицы 1, вычесть количество из таблицы 2 и положить в таблицу 3.

Что-то нет никаких идей как это сделать :(
P.S. Если можно напишите пожалуйста для asp.net.
...
Рейтинг: 0 / 0
25.05.2011, 11:05
    #37278038
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скложить таблицы
ilovemylolЕсть 3ри одинаковые sql таблицы.Это тренд .
Вида продукт, количество.
Нужно из таблицы 1, вычесть количество из таблицы 2 и положить в таблицу 3.
Если "вида продукт" в каждой из таблиц не повторяются, то
Код: plaintext
1.
2.
3.
4.
insert into t3 ([вида продукт], Qty) 
select  case when t1.[вида продукт] is null then t2.[вида продукт] else t1.[вида продукт] end,
isnull(t1.qty, 0 ) - isnull(t2.qty, 0 )
from t1
full outer join t2 on t2.[вида продукт] = t1.[вида продукт]
...
Рейтинг: 0 / 0
25.05.2011, 11:27
    #37278089
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скложить таблицы
Antonariy,

постебался над сокращением тройки круто, а дальше сам родил то же самое

Код: plaintext
case when t1.[вида продукт] is null then t2.[вида продукт] else t1.[вида продукт] end
эквивалентно
Код: plaintext
isnull(t1.[вида продукт],t2.[вида продукт])
ладно бы забыл про isnull, но ниже ты ее употребляешь для тех же целей

давно хотел тебя спросить, почему джа меня больше не любит?
...
Рейтинг: 0 / 0
25.05.2011, 12:00
    #37278176
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скложить таблицы
ilovemylol,
Код: plaintext
1.
2.
3.
4.
5.
insert into таблица3(продукт,количество)
select продукт, sum(количество)
from (select продукт, количество from таблица1
        union all
      select продукт, -количество from таблица2) 
group by продукт;
...
Рейтинг: 0 / 0
25.05.2011, 12:12
    #37278208
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скложить таблицы
Код: plaintext
1.
2.
3.
4.
5.
insert into таблица3(продукт,количество)
select продукт, sum(количество)
from (select продукт, количество from таблица1
        union all
      select продукт, -количество AS количество from таблица2) 
group by продукт
...
Рейтинг: 0 / 0
25.05.2011, 12:17
    #37278219
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скложить таблицы
Shocker.Pro,
неужели asp без As не обработает такой простой запрос?
...
Рейтинг: 0 / 0
25.05.2011, 12:21
    #37278231
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скложить таблицы
скукотища,

во втором запросе в подзапросе название поля не определено, фиг его знает, как поведет себя вышестоящий запрос при попытке Sum() несуществующего поля, в этом деле лучше четко прописать
...
Рейтинг: 0 / 0
25.05.2011, 12:28
    #37278252
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скложить таблицы
Shocker.Pro,
известно как поведёт - при использовании UNION названия полей всегда берутся из первой "части". В остальных "частях" поля могут называться как угодно.
...
Рейтинг: 0 / 0
25.05.2011, 12:51
    #37278329
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скложить таблицы
Shocker.ProAntonariy,

постебался над сокращением тройки круто, а дальше сам родил то же самое В tsql мой моск не настолько гибок, иначе бы родил запрос скукотищи :)
...
Рейтинг: 0 / 0
25.05.2011, 13:10
    #37278367
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скложить таблицы
AntonariyВ tsql мой моск не настолько гибок, иначе бы родил запрос скукотищи :)
если бы я решал эту задачу раньше тебя, тоже бы написал запрос скукотищи. а так - даже в голову не пришло, начал придирками заниматься
...
Рейтинг: 0 / 0
26.05.2011, 10:34
    #37279933
ilovemylol
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скложить таблицы
Больше спасибо за ответы ! Я болван заранее не подумав попросил немного не то:( Как сделать апдейт 3ей таблицы а не селект ?
...
Рейтинг: 0 / 0
26.05.2011, 10:45
    #37279963
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скложить таблицы
ilovemylol,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
update таблица3 As T 
  inner join
(select продукт, sum(количество) As кол_во
from (select продукт, количество from таблица1
        union all
      select продукт, -количество from таблица2) 
group by продукт) as S
  on Z.продукт=T.продукт
set T.количество=S.кол_во;
...
Рейтинг: 0 / 0
26.05.2011, 10:49
    #37279972
скукотища
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скложить таблицы
опечатка в условии соединения, надо так:
Код: plaintext
1.
2.
group by продукт) as S
  on S.продукт=T.продукт
...
Рейтинг: 0 / 0
26.05.2011, 10:52
    #37279989
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скложить таблицы
ilovemylolБольше спасибо за ответы ! Я болван заранее не подумав попросил немного не то:( Как сделать апдейт 3ей таблицы а не селект ?
если не ошибся...
Код: plaintext
1.
2.
3.
4.
5.
6.
update таблица3 set количество=t.количество
from таблица3
inner join (select продукт, sum(количество) AS количество
            from (select продукт, количество from таблица1
                  union all
                  select продукт, -количество from таблица2)) 
                  group by продукт) AS t ON таблица3.продукт=t.продукт
...
Рейтинг: 0 / 0
26.05.2011, 10:54
    #37279992
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скложить таблицы
не успел ))
...
Рейтинг: 0 / 0
26.05.2011, 10:57
    #37280001
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Скложить таблицы
Shocker.Proесли не ошибся...
скобка лишняя
Код: plaintext
1.
2.
3.
4.
5.
6.
update таблица3 set количество=t.количество
from таблица3
inner join (select продукт, sum(количество) AS количество
            from (select продукт, количество from таблица1
                  union all
                  select продукт, -количество from таблица2) 
                  group by продукт) AS t ON таблица3.продукт=t.продукт
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Скложить таблицы / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]