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


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
ЧУВАК, это сработало прекрасно! Большое спасибо, нбк! Спасибо всем за то, что так готовы помочь! Вы, ребята, потрясающие!
Как вы думаете, столбец ID связывает таблицы контактов и сотрудников? Возможно, выберите идентификатор сотрудника на основе имени и фамилии и обновите номер телефона в строках таблицы контактов с помощью этого идентификатора (или идентификаторов). Зависит от того, действительно ли ID является чем-то, к чему вы можете присоединиться.