Как вставить и обновить данные сразу в 3 таблицы - PullRequest
0 голосов
/ 04 октября 2011

клиенты звонят по номеру customer_has_phonenumbers

customers -> detailed
customers.customer_id int(11) primary auto_increment
customers.customer_name varchar(255)

phonenumbers -> detailed
phonenumbers.phonenumber_id int(11) primary auto_increment
phonenumbers.phonenumber_type int(11)
phonenumbers.phonenumber_name varchar(255)
phonenumbers.phonenumber varchar(15)

customers_has_phonenumbers -> detailed
customers_has_phonenumbers.customer_id int(11) -> customers_customer_id
customers_has_phonenumbers.phonenumber_id int(11) -> phonenumbers_phonenumber_id

как вставить и обновить номер телефона

надеюсь, что вы, ребята, можете помочь

Ответы [ 2 ]

1 голос
/ 04 октября 2011

Введите новый номер телефона

insert into phonenumbers (phonenumber_type,phonenumber_name,phonenumber) values (1,'example name','example number');

insert into customers_has_phonenumbers (customers_customer_id,phonenumbers_phonenumber_id) values ((select customer_id from customers where customer_name = 'example customer name'),(select phonenumber_id from phonenumbers where phonenumber = 'example number');

Обновить номер телефона

insert into phonenumbers (phonenumber_type,phonenumber_name,phonenumber) values (1,'example name','new phone number');

update customers_has_phonenumbers set phonenumbers_phonenumber_id = (select phonenumber_id from phonenumbers where phonenumber = 'new phone number') where phonenumbers_phonenumber_id = (select phonenumber_id from phonenumbers where phonenumber = 'old phone number') and customers_customer_id = (select customer_id from customers where customer_name = 'example customer name');

Не уверен, как бы вы справились с наличием клиентов с одинаковыми именами!

Вероятно, стоит иметь уникальный ключ в столбце phonenumbers.phonenumber, если это разумно. В противном случае все, что однозначно идентифицирует строку phonenumbers (кроме phonenumbers.phonenumber_id), следует использовать в суб-выборе update для получения значения phonenumbers.phonenumber_id. То же самое касается подвыбора клиента в том же заявлении об обновлении.

Кроме того, я не уверен, есть ли у вас строка с клиентами, когда вы вводите новый номер телефона? Если нет, то вам придется вставить строку новых клиентов перед вставкой в ​​таблицу Customers_has_phonenumbers.

Надеюсь, это поможет.

1 голос
/ 04 октября 2011

См. Синтаксис нескольких таблиц на на этой странице .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...