Автозаполнение связующей таблицы - MySQL

Узнай цену своей работы

Формулировка задачи:

Всем привет, помогите разобраться. Есть таблица с пользователями users: Поля id_user, id_city, category Есть таблица с сообщениями message: Поля id_message, id_city, category И связующая таблица user_message: Поля id_user, id_message Задача сделать так, чтоб при регистрации (добавления записи в таблицу user) сравнить его поля id_city и category с полями в таблице message, и добавить в третью таблицу все id_message в которых они совпадают, то есть несколько записей. Заранее благодарен.

Решение задачи: «Автозаполнение связующей таблицы»

textual
Листинг программы
INSERT INTO user_message (id_user, id_message)
SELECT u.id_user, m.id_message
FROM users AS u, message AS m
WHERE u.id_user=<Идентификатор пользователя> AND u.id_city=m.id_city AND u.category=m.category;

Объяснение кода листинга программы

В данном коде происходит автозаполнение связующей таблицы user_message данными из таблиц users и message.

  1. INSERT INTO user_message (id_user, id_message) - здесь указывается, что мы хотим вставить данные в таблицу user_message, а именно в два поля: id_user и id_message.
  2. SELECT u.id_user, m.id_message - здесь мы выбираем данные из таблиц users и message, которые мы хотим вставить в таблицу user_message. Мы выбираем id_user из таблицы users и id_message из таблицы message.
  3. FROM users AS u, message AS m - здесь мы указываем, из каких таблиц мы хотим выбрать данные. Мы выбираем данные из таблицы users и таблицы message.
  4. WHERE u.id_user=<Идентификатор пользователя> AND u.id_city=m.id_city AND u.category=m.category - здесь мы указываем условия, при которых будут выбираться данные. Мы выбираем только те строки, где id_user равен определенному идентификатору пользователя, id_city равен id_city из таблицы message, и category равен category из таблицы message. Таким образом, данный код будет вставлять данные в таблицу user_message, если и только если выполняются указанные условия.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5