Перенос данных из одной таблицы MySQL в другую с параметрами - PullRequest
0 голосов
/ 06 июля 2011

У меня есть таблица с именем SUBJECT с полями SUBJ_ID и SUBJ_NAME.Другая таблица называется COURSES с полями COURSE_NAME, SUBJ_NAME и SUBJ_ID.Моя цель - автоматически обновить SUBJ_ID в таблице COURSE на SUBJ_ID из таблицы SUBJECT, когда SUBJ_NAME введено в таблицу COURSE.

Например,таблица SUBJECT содержит следующие данные:

+-----------+-------------+
| course_ID | course_name |
+-----------+-------------+
|     1     | math        |
|     2     | physics     |
+-----------+-------------+

Если я войду в таблицу COURSES:

INSERT INTO `courses` VALUES('Algebra 101', 'Math');

Как я могу автоматически обновить SUBJ_ID до1

1 Ответ

3 голосов
/ 06 июля 2011

Измените схему таблицы на что-то вроде ниже:

Таблица курсов

+-----------+---------+------------+
| course_id | subbj_id|course_name |
+-----------+---------+------------+
|     1     | 1       |  math      |
|-----------+---------+----------- +  

Таблица тем

+-----------+-----------+
| subj_id   | subj_name |
+-----------+---------+-+
|     1     |  math     | 
|-----------+-----------+

Избавьтесь от subj_name в таблице courses (поскольку она избыточна и может привести к повреждению данных, как в вашем случае). Это нормализует ваши данные, и вы сможете получать информацию через объединения.

Если у вас есть предметная таблица с subj_id и subj_name, тогда subj_id должен быть вашим первичным ключом (уникальным идентификатором). Ваша вторая таблица, курсы, должна иметь course_id, course_name и subj_id. Course_id должен быть вашим первичным ключом (уникальным идентификатором). После этого у вас будет один-ко-многим внешний ключ между subj_id в предметной таблице и subj_id в вашей таблице курса.

После настройки вы будете использовать этот запрос:

select c.course_name, s.subj_name from courses AS c inner join subject AS s on c.subj_id = s.subj_id;

Это будет тянуть курс и предмет, к которому он принадлежит.

Когда вам нужно обновить имя субъекта, теперь вам нужно изменить его только в одном месте, subject.subj_name, и оно будет распространяться из-за взаимосвязи.

Если всего этого слишком много, прочитайте о нормализации данных и правильной настройке отношений.

Удачи!

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