Есть ли способ найти в одной таблице определенные значения и, если они будут успешно найдены, обновить другую таблицу?

Всем доброго дня,

Я впервые использую SQL, так что простите меня за то, что я новичок. У меня есть три разные таблицы, которые я создал:

CREATE TABLE employee
(ID int,
fname text,
lname text,
age int,
hiredate date);

CREATE TABLE address
(ID int,
address1 text,
address2 text,
city text,
state text,
zip text);

CREATE TABLE contact
(ID int,
cellphone text,
homephone text,
email text);

У меня есть инструкции, что я должен обновить номер мобильного телефона человека в таблице контактов, «используя fname и lname в предложении where».

Я знаю, как напрямую обновить номер телефона человека в таблице, но использование IN и WHERE в сочетании с UPDATE между двумя разными таблицами просто ставит меня в тупик. продуманное решение?

Мой ход мыслей заключался в том, чтобы придумать какое-то решение «если-то». т. е. ЕСЛИ я могу найти сотрудника таблицы по определенному имени fname и lname и найти его, ТОГДА обновить контактный номер мобильного телефона новым номером, который я назначу. Но.. Я понятия не имею, могу ли я вообще делать такие утверждения «если-то». У кого-нибудь есть предложения?

Спасибо за ваше время!

Как вы думаете, столбец ID связывает таблицы контактов и сотрудников? Возможно, выберите идентификатор сотрудника на основе имени и фамилии и обновите номер телефона в строках таблицы контактов с помощью этого идентификатора (или идентификаторов). Зависит от того, действительно ли ID является чем-то, к чему вы можете присоединиться.

Bobby Durrett 13.05.2022 01:50

Столбец ID действительно соединяет эти две таблицы, да! Я логически понимаю, к чему вы клоните, и это отличная идея! Проблема в том, что я не совсем уверен, как это будет структурировано... хотя я думаю, как могла бы пройти первая половина? Я буду использовать пример, пытаясь выбрать идентификатор сотрудника Дарта Вейдера: SELECT IDFROM employeeINNER JOIN contact ON employee.ID = contact.ID WHERE fname IN ('Darth') AND lname IN ('Vader); Это отдаленно близко к тому, как получить идентификатор этого конкретного человека? Кроме того, я не уверен, как использовать это выбранное значение для обновления другой таблицы.

trb7074 13.05.2022 02:01
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
2
36
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

update contact
set cellphone = 'xxx-xxx-xxxx', homephone = 'xxx-xxx-xxxx'
where ID = (
    select ID from employee
    where fname = 'Bob' and lname = 'Jones'
);

Это предполагает, что только один сотрудник будет соответствовать, в противном случае это вызовет ошибку (что довольно часто является тем, что вы хотите).

Ответ принят как подходящий

Здесь используется IN CLAUSE, потому что может быть более одного идентификатора с одной и той же комбинацией имен.

UPDATE contact
SET cellphone  = '1234567890'
WHERE ID IN ( SELECT ID FROM employee WHERE fname  = 'A' AND lname = 'B');

добавить закрывающую скобку после предложения IN

mounaim 13.05.2022 02:01

ЧУВАК, это сработало прекрасно! Большое спасибо, нбк! Спасибо всем за то, что так готовы помочь! Вы, ребята, потрясающие!

trb7074 13.05.2022 02:07

Другие вопросы по теме