SQL при обновлении атрибута путем объединения двух таблиц - PullRequest
0 голосов
/ 05 апреля 2020

Допустим, у меня есть две таблицы, и одна таблица - это пассажир, а другая - карта.

create table passenger(
user_id char(20) not null unique,
name char(20),
age integer,
pin integer,
card_num char(20) unique,,
foreign key (card_num) references card);

create table card(
card_num char(20) primary key,
balance number(10,2),
cvn char(20) );

Если я хочу обновить баланс карты одного пассажира, как следует SQL написано? Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 05 апреля 2020

Ваша таблица «Карта» должна содержать внешний ключ, ссылающийся на Пассажира. PassengerId (в вашем случае user_id) в качестве внешнего ключа. Не наоборот

, поэтому ваша инструкция по обновлению будет выглядеть как Обновление набора карточек с балансом = значение ГДЕ user_id = значение;

0 голосов
/ 05 апреля 2020

Для MySql вам необходимо объединить таблицы в операторе UPDATE следующим образом:

update card c
inner join passenger p
on p.card_num = c.card_num
set c.balance = ?
where p.name = ? 

и для Oracle:

update card c
set c.balance = ?
where c.card_num = (
  select p.card_num
  from passenger p
  where p.name = ?
)
...