0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 9

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

28.09.2014, 18:17. Показов 1281. Ответов 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru