Вот моя проблема: мне поручено исправить некоторые значения в столбце, которые могут быть получены из других таблиц. До сих пор я пытался использовать триггер безрезультатно, так как мне не хватает понимания этой концепции. Кроме того, мой инструктор сказал, что мне даже не нужно использовать триггеры, чтобы решить эту проблему, и я не могу понять, как это возможно. Я только начал изучать SQL за последние 2-3 недели, так что любые советы и рекомендации будут высоко оценены.
Имеется 3 рассматриваемых таблицы:
Транзакции (t_id2, a_id2, f_id2 , class2, T_Date)
Билет (t_id, u_id2, тип, totalCost, P_DateTime)
ClassCost (a_id, f_id, класс, стоимость)
Transactions
----------------------------------------------
t_id2 | a_id2 | f_id2 | class2 | T_Date
----------------------------------------------
1 'AB' 2032 1 '2020-03-01'
1 'ZZ' 3331 2 '2020-03-11'
2 'AB' 401 2 '2020-02-21'
Ticket
--------------------------------------------------------
t_id | u_id2 | type | totalCost | P_DateTime
--------------------------------------------------------
1 2 1 999.99 '2020-03-01 01:15:00'
2 5 2 0.00 '2020-03-11 08:33:51'
ClassCost
-------------------------------------
a_id | f_id | class | totalCost
-------------------------------------
'AB' 2032 1 95.00
'AB' 401 2 45.00
'BB' 3176 2 50.00
'ZZ' 3331 1 105.00
'ZZ' 3331 2 46.00
Я бы хотел бы выдать следующее.
Ticket
--------------------------------------------------------
t_id | u_id2 | type | totalCost | P_DateTime
--------------------------------------------------------
1 2 1 141.00 '2020-03-01 01:15:00'
2 5 2 45.00 '2020-03-11 08:33:51'
Возможно ли это даже без использования триггера? Я знаю, что мы можем использовать Update
для обновления указанного столбца, но основная проблема заключается в использовании Ticket.t_id
для получения реальной стоимости от Transactions
и использовании Transactions.a_id2
и Transactions.f_id2
для получения ClassCost.cost
. Требуется ли здесь соединение?
РЕДАКТИРОВАТЬ: Этот запрос дает результирующую таблицу
select sum(fare)
from (select T.t_id,
CC.cost
from ClassCost as CC,
Transactions as S,
Ticket as T
where T.t_id = S.t_id2
and F.a_id = S.a_id2
and F.f_id = S.f_id2
and CC.class = S.class3) as A
group by t_id;
--------------------
t_id | totalCost
--------------------
1 141.00
2 45.00
Теперь мне просто нужно сохранить столбец totalCost в Ticket.totalCost
. Я попытался выполнить обновление с моим подзапросом без T.t_id
, чтобы он легко сохранялся в Ticket. Тем не менее, я получаю код ошибки: 1242, подзапрос возвращает более 1 строки. Есть идеи?