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

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

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

Студворк — интернет-сервис помощи студентам
Нужна помощь, помогите разобраться пожалуйста:
Существует 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
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.09.2014, 18:17
Ответы с готовыми решениями:

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

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

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

12
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
30.09.2014, 10:42
Лучший ответ Сообщение было отмечено 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  [ТС]
Спасибо! буду дальше разбираться! ) это только лишь кусочек огромного проекта.. )

Добавлено через 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
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
01.10.2014, 10:22
Лучший ответ Сообщение было отмечено 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  [ТС]
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
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
01.10.2014, 11:35
Лучший ответ Сообщение было отмечено oldjier как решение

Решение

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

Добавлено через 46 секунд
Цитата Сообщение от oldjier Посмотреть сообщение
C ошибкой разобрался!! ) остается второй вопрос..
покажи запрос
1
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 9
01.10.2014, 13:47  [ТС]
Там просто нужно было поменять название столбца с 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
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
02.10.2014, 10:52
Лучший ответ Сообщение было отмечено 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  [ТС]
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
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
02.10.2014, 12:05
Лучший ответ Сообщение было отмечено 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  [ТС]
а если будет несколько строк, у которых будет 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
 Аватар для nio
6050 / 3460 / 336
Регистрация: 14.06.2009
Сообщений: 8,136
Записей в блоге: 2
02.10.2014, 12:46
Цитата Сообщение от 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  [ТС]
Цитата Сообщение от nio Посмотреть сообщение
поздзапросом
то-есть получится таким образом -
WHEN cel = 2 THEN (rol- (SELECT t2.rol FROM t2 WHERE t2.cel=3)) ?

Добавлено через 5 минут
Да проверил, все норм. Спасибо огромное!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.10.2014, 12:54
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru