Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 9
1

Создать таблицу t3, где будут отображаться данные по одинаковым значениям id — id_name таблиц

28.09.2014, 18:17. Показов 954. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужна помощь, помогите разобраться пожалуйста:
Существует 2 таблицы t1 и t2
в таблице t1 столбцы id, Name,
в таблице t2 столбцы id, id_name, cel, rol
необходимо создать таблицу t3, где будут отображаться данные по одинаковым значениям id - id_name таблиц (t1, t2) и при условии, что в таблице t2 (если в столбце cel есть одинаковые значения, считать в сумму значения столбца rol), то есть должна получится следующая таблица из двух таблиц
t1
id | Name |
1 ol
2 lo
3 so

t2
id | id_name | cel | rol
1 1 1 5
2 2 2 4
3 1 1 3
4 3 3 7
5 1 2 3
6 1 2 2
7 2 2 3
8 2 1 5
9 2 1 2

что должно получится:
t3
id | id_name | cel | Sum_rol
1 1 1 5+3=8
2 1 2 3+2=5
3 2 1 5+2=7
4 2 2 3+4=7

Добавлено через 6 минут
в ms sql
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.09.2014, 18:17
Ответы с готовыми решениями:

Создать отчеты, в котором будут данные из 2-х таблиц в Rave Report
Всем ку! Есть задачка... Нужно создать отчеты, в котором будут данные из 2-х таблиц, по сути...

Создать скрипт, который открывая через Python, будет показывать таблицу из двух столбцов, где будут числа от 0 до 10
Мне нужно создать скрипт, который открывая через Python, будет показывать таблицу из двух столбцов,...

При добавлении строк в таблицу данные перестают отображаться в DataGridView
Вобщем вот код: Dim connnectionstring As String ="Data...

Выбрать данные из нескольких таблиц только по существующим значениям в таблицах
$result = mysqli_query( $this->db, "SELECT a.*, u.*, uc.* FROM...

12
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
30.09.2014, 10:42 2
Лучший ответ Сообщение было отмечено oldjier как решение

Решение

Цитата Сообщение от oldjier Посмотреть сообщение
в ms sql
SQL
1
SELECT id_name, cel,  Sum_rol = SUM(rol) FROM t2 GROUP BY id_name, cel
1
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 9
30.09.2014, 21:19  [ТС] 3
Спасибо! буду дальше разбираться! ) это только лишь кусочек огромного проекта.. )

Добавлено через 2 часа 54 минуты
Подскажите еще такой момент с условием:
в таблицу T3 добавляется 1 колонка, назовём её Proc
в неё необходимо выводить данные по условиям
1. if cel = 1 then Proc = ((rol/5)*100) else
if cel = 2 then proc = (rol- RT) else
* RT - новое значение в таблице t1, значение этого столбца которое соответствует ID_Name таблицы t3)

и if cel = 3 then Proc = ( rol - rol(cel который равен 2) )

Спасибо огромнейшее за помощь - за ранее! )

Добавлено через 3 часа 25 минут
0
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
01.10.2014, 10:22 4
Лучший ответ Сообщение было отмечено oldjier как решение

Решение

oldjier, не совсем понял, что именно нужно, но выглядит приблизительно так
SQL
1
2
3
4
5
6
7
SELECT 
Proc = CASE WHEN cel = 1 THEN  ((rol/5)*100)
                 WHEN cel = 2 THEN (rol- RT)
                 WHEN cel = 3 THEN ( rol - rol(cel который равен 2) )
                 ELSE /*значение не соответсвующее ранее перечисленным*/
          END
FROM tableName
Надеюсь принцип понятен, и получится использовать в своих запросах
1
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 9
01.10.2014, 11:28  [ТС] 5
SELECT
Proc= CASE WHEN cel = 1 THEN ((rol/5)*100))
WHEN cel = 2 THEN (rol- (RT from t1))
WHEN cel = 3 THEN ( rol - rol(cel=2) )
ELSE /*значение не соответсвующее ранее перечисленным*/
END
FROM t2

выдает ошибку : Неправильный синтаксис около ключевого слова "Proc"

и правильно ли выделенное красным?

извините я просто новичёк в SQL и пытаюсь разобраться на практике... спасибо за помощь

Добавлено через 5 минут
а по второму даже вот как то так
WHEN cel = 2 THEN (rol- (RT(id=(id_name from t2) from t1)))

Добавлено через 3 минуты
нужно от Значения Rol таблицы t2 отнять значение которое подходит по Id (id_name=id) в столбце Rt таблицы T1

Добавлено через 5 минут
C ошибкой разобрался!! ) остается второй вопрос..
0
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
01.10.2014, 11:35 6
Лучший ответ Сообщение было отмечено oldjier как решение

Решение

Цитата Сообщение от oldjier Посмотреть сообщение
правильно ли выделенное красным?
нет конечно таблицы нужно через JOIN связывать

Добавлено через 46 секунд
Цитата Сообщение от oldjier Посмотреть сообщение
C ошибкой разобрался!! ) остается второй вопрос..
покажи запрос
1
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 9
01.10.2014, 13:47  [ТС] 7
Там просто нужно было поменять название столбца с Proc


а как их связать через JOIN

SQL
1
2
3
4
5
6
7
8
SELECT 
 
Procs = CASE WHEN cel = 1 THEN  ((rol/5)*100)
                 WHEN cel = 2 THEN (rol- rol(cel=2))
                 WHEN cel = 3 THEN (rol- RT(id_name=id))
                /*значение не соответсвующее ранее перечисленным*/
          END
FROM t2
Добавлено через 2 минуты
мне просто нужно понять суть на данном примере, а так у меня база огромнейшая и совершенно другие данные и столбцы и все дела, спасибо

Добавлено через 33 минуты
c Join разобрался!

остается 1 вопрос вроде )

как осуществить - WHEN cel = 3 THEN ( rol - rol(cel=2) )

Добавлено через 5 минут
Может как то так:

WHEN cel = 3 THEN ( rol- (rol=(when cel=2 then)) ) ? но ругается!

Добавлено через 1 час 19 минут
Вроде разобрался с нюансами, теперь вот только соединить не получается :

SELECT

id_name, cel,
Sum_rol = SUM(rol) FROM t2 GROUP BY id_name, cel,

Procs = CASE WHEN cel = 1 THEN ((rol/5)*100)
WHEN cel = 2 THEN (rol- (Select rol from t2 where cel=3))
WHEN cel = 3 THEN (rol- rt)

END

FROM t2 inner join t1 on t2.id_name = t1.id

я так понимаю что что то конфликтует между собой...
0
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
02.10.2014, 10:52 8
Лучший ответ Сообщение было отмечено oldjier как решение

Решение

Абсолютно не понятно, что нужно сделать. Накропал на коленке что-то приблизительное
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT 
 
t2.id_name, t2.cel, 
Sum_rol = SUM(t2.rol)
 
Procs = CASE WHEN t2.cel = 1 THEN ((t2.rol/5)*100)
WHEN t2.cel = 2 THEN (t2.rol- (SELECT t2.rol FROM t2 WHERE t2.cel=3))--тут какой-то бред
WHEN t2.cel = 3 THEN (t2.rol- rt)
 
END
 
FROM t2 INNER JOIN t1 ON t2.id_name = t1.id-- так и не понял, зачем было присоединять таблицу t1
GROUP BY t2.id_name, t2.cel
1
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 9
02.10.2014, 11:57  [ТС] 9
WHEN t2.cel = 2 THEN (t2.rol- (SELECT t2.rol FROM t2 WHERE t2.cel=3))--тут какой-то бред

здесь мне нужно отнять значение от rol текущего rol которое соответствует cel=3


FROM t2 INNER JOIN t1 ON t2.id_name = t1.id-- так и не понял, зачем было присоединять таблицу t1

t1 для того чтобы вычесть значение RT которое находится в таблице users

Добавлено через 2 минуты
как то вот таким образом - WHEN cel = 2 THEN (rol- (case WHEN сel=3 THEN rol end))
0
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
02.10.2014, 12:05 10
Лучший ответ Сообщение было отмечено oldjier как решение

Решение

Цитата Сообщение от oldjier Посмотреть сообщение
здесь мне нужно отнять значение от rol текущего rol которое соответствует cel=3
а если будет несколько строк, у которых будет cel=3 ?
Цитата Сообщение от oldjier Посмотреть сообщение
как то вот таким образом - WHEN cel = 2 THEN (rol- (case WHEN сel=3 THEN rol end))
это не будет работать
Я не могу давать советы, не понимая сути происходящего. На данный момент мне уже не понятно, какой должен быть результат
1
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 9
02.10.2014, 12:17  [ТС] 11
а если будет несколько строк, у которых будет cel=3 ?
для этого я их и связываю по id - cel=3 у id=1 - только 1

как то вот таким образом - WHEN cel = 2 THEN (rol- (case WHEN сel=3 THEN rol end))
это не будет работать

а как можно узнать тогда значение rol при cel = 3?

Добавлено через 7 минут
Цитата Сообщение от nio Посмотреть сообщение
это не будет работать
может просто оставить - WHEN сel=3

Добавлено через 27 секунд
THEN rol
0
6048 / 3457 / 335
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
02.10.2014, 12:46 12
Цитата Сообщение от oldjier Посмотреть сообщение
для этого я их и связываю по id - cel=3 у id=1 - только 1
на подзапрос
SQL
1
SELECT t2.rol FROM t2 WHERE t2.cel=3)
эта связь не действует. И где гарантия, что для id=1 будет только одно значение cel=3
Цитата Сообщение от oldjier Посмотреть сообщение
а как можно узнать тогда значение rol при cel = 3?
поздзапросом
Цитата Сообщение от oldjier Посмотреть сообщение
может просто оставить
нет
1
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 9
02.10.2014, 12:54  [ТС] 13
Цитата Сообщение от nio Посмотреть сообщение
поздзапросом
то-есть получится таким образом -
WHEN cel = 2 THEN (rol- (SELECT t2.rol FROM t2 WHERE t2.cel=3)) ?

Добавлено через 5 минут
Да проверил, все норм. Спасибо огромное!
0
02.10.2014, 12:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2014, 12:54
Помогаю со студенческими работами здесь

Условие, при котором данные не будут записываться в таблицу
Здравствуйте! Может быть, кто-нибудь подскажет. Допустим, есть такая структура файла: ...

Группировать по одинаковым значениям
Подскажите как группировать в группы по одинаковым значениям? Например есть таблица есть users...

Сортировка двух столбцов по одинаковым значениям
libreOffice Версия: 4.3.7.2 Столкнулась с такой проблемой, нужно отсортировать два столбца по...

Создать игру, где будут 2-3 барана и волк
Короче, нужна помощь, как реализовать вот это: "Создать игру, где будут 2-3 барана и волк. При...

Ввести информацию о результатах прыгунов и вывести таблицу результатов,где результаты победителя будут красным цветом.
В соревнованиях по прыжкам вдаль участвуют 5 легкоатлетов - Роберт,Давид,Джон,Джек и Боб.У каждого...

Выбор значений в одном столбце по одинаковым значениям в другом
Добрый день! Помогите пожалуйста! Есть таблица, в которой хранятся все изменения с файлом. В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru