0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 9
|
|
1 | |
Создать таблицу t3, где будут отображаться данные по одинаковым значениям id — id_name таблиц28.09.2014, 18:17. Показов 954. Ответов 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
|
28.09.2014, 18:17 | |
Ответы с готовыми решениями:
12
Создать отчеты, в котором будут данные из 2-х таблиц в Rave Report Создать скрипт, который открывая через Python, будет показывать таблицу из двух столбцов, где будут числа от 0 до 10 При добавлении строк в таблицу данные перестают отображаться в DataGridView Выбрать данные из нескольких таблиц только по существующим значениям в таблицах |
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
|
01.10.2014, 10:22 | 4 | |||||
Сообщение было отмечено oldjier как решение
Решение
oldjier, не совсем понял, что именно нужно, но выглядит приблизительно так
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
|
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 9
|
||||||
01.10.2014, 13:47 [ТС] | 7 | |||||
Там просто нужно было поменять название столбца с Proc
а как их связать через JOIN
мне просто нужно понять суть на данном примере, а так у меня база огромнейшая и совершенно другие данные и столбцы и все дела, спасибо Добавлено через 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
|
02.10.2014, 10:52 | 8 | |||||
Сообщение было отмечено oldjier как решение
Решение
Абсолютно не понятно, что нужно сделать. Накропал на коленке что-то приблизительное
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
|
02.10.2014, 12:05 | 10 |
Сообщение было отмечено oldjier как решение
Решение
а если будет несколько строк, у которых будет cel=3 ?
это не будет работать
Я не могу давать советы, не понимая сути происходящего. На данный момент мне уже не понятно, какой должен быть результат
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 минут может просто оставить - WHEN сel=3 Добавлено через 27 секунд THEN rol
0
|
02.10.2014, 12:46 | 12 | |||||
на подзапрос
поздзапросом нет
1
|
0 / 0 / 0
Регистрация: 28.09.2014
Сообщений: 9
|
|
02.10.2014, 12:54 [ТС] | 13 |
то-есть получится таким образом -
WHEN cel = 2 THEN (rol- (SELECT t2.rol FROM t2 WHERE t2.cel=3)) ? Добавлено через 5 минут Да проверил, все норм. Спасибо огромное!
0
|
02.10.2014, 12:54 | |
02.10.2014, 12:54 | |
Помогаю со студенческими работами здесь
13
Условие, при котором данные не будут записываться в таблицу Группировать по одинаковым значениям Сортировка двух столбцов по одинаковым значениям Создать игру, где будут 2-3 барана и волк Ввести информацию о результатах прыгунов и вывести таблицу результатов,где результаты победителя будут красным цветом. Выбор значений в одном столбце по одинаковым значениям в другом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |