Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Добавление во связанные таблицы
|
|||
|---|---|---|---|
|
#18+
Всем привет! Нужно сделать перенос данных из таблицы во связанные таблицы (в рамках одной базы данных). MySQL (InnoDB): Есть 4 таблицы: tmp: которая содержит все данные. Из нее нужно перенести в связанные таблицы (многие-ко многим) 1. Таблица содержит данные с уникальным полем. 2. Связующая таблица. 3. Во всех таблицах, кроме связующей (AI) Код: sql 1. 2. 3. 4. 5. Данные добавляет, но в связующую таблицу приходит только 1 значение. Понимаю, что это основы, но хотя бы направление подскажите! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2017, 19:16 |
|
||
|
Добавление во связанные таблицы
|
|||
|---|---|---|---|
|
#18+
last_insert_id() возвращает последнее сгенерированное значение. ОДНО. Если вставлено несколько записей одним запросом - вернётся первое из всех сгенерированных для этого запроса. Korvin01в связующую таблицу приходит только 1 значение INSERT ... VALUES вставляет ровно столько записей, сколько блоков в секции VALUES. У тебя там один блок - вставится одна запись. Правильный третий запрос такой: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. При этом совокупности (name1, name2, name3, name4, name5) и (r_name1, r_name2, r_name3, r_name4) в пределах своей таблицы каждая должны быть уникальными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2017, 19:36 |
|
||
|
Добавление во связанные таблицы
|
|||
|---|---|---|---|
|
#18+
Akina, Спасибо за ответ. Решение работает. Но только, как и писал с уникальными колонками. У меня есть таблица tmp: n1, n2, n3, n4, n5, r_1, r_2, r_3, r_4 (49к записей) из нее я переношу данные в 3 таблицы: table1 - перенеслось правильно (1,3к записей) table2 - перенеслось правильно (49к записей) common - пришло 1,3к записей (в связующую таблицу) Но связующую таблицу пришлось делать именно из-за того, что table1 есть уникальная колонка имя. А во второй описаны события, т.е. один и тот же человек может участвовать в 100 событиях. common (связь внешними ключами по id): name - событие1 name - событие2 name1 - событие3 и т.д. Вот как правильно это перенести? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2017, 09:17 |
|
||
|
Добавление во связанные таблицы
|
|||
|---|---|---|---|
|
#18+
Korvin01во второй описаны события, т.е. один и тот же человек может участвовать в 100 событиях. common (связь внешними ключами по id): name - событие1 name - событие2 name1 - событие3 и т.д. Вот как правильно это перенести? Правильно - переделать структуру. Предварительно почитав теорию по организации структуры БД для представления связи много-ко-много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2017, 09:26 |
|
||
|
Добавление во связанные таблицы
|
|||
|---|---|---|---|
|
#18+
Akina, таблицы: empl: id, employee_name, position и т.д. events: id, event_date, event_place и т.д. Работник такой один, но переговоров, например за историю работы у него может быть 100. Поэтому из прочитанного сделал вывод, что связующая таблица будет выходом, плюс, таблиц, конечно больше. Иначе, как узнать, что на этих переговорах был именно этот сотрудник или посмотреть историю переговоров сотрудника? Понимаю, что можно все это засунуть в 1 таблицу, как сейчас, но если сотрудников больше 10к? А переговоров 1млн? Может я просто не с той стороны подхожу к вопросу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2017, 09:44 |
|
||
|
Добавление во связанные таблицы
|
|||
|---|---|---|---|
|
#18+
Как последнее пояснение соотносится с денормализованной таблицей событий? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2017, 10:29 |
|
||
|
Добавление во связанные таблицы
|
|||
|---|---|---|---|
|
#18+
Akina, Согласен, чтобы получать правильные ответы - нужно задавать правильные вопросы. В изображении структура бд. В таблице tmp строкой перечислены сотрудники и события. (в данный момент записей 49к) (id, Иванов Иван Иванович, менеджер, статус, 12-10-2016, Смоленск, договор 1020), (id, Иванов Иван Иванович, менеджер, статус, 11-10-2016, Смоленск, договор 1021) (id, Иванов Иван Иванович, менеджер, статус, 13-10-2016, Смоленск, договор 1020) Нужно перенести из это таблицы в emp (сотрудников 1,3к): (id, Иванов Иван Иванович, менеджер, статус) (id, Петров Петр Петрович, менеджер, статус) Имя сотрудника уникально. Далее в event (так же 49к записей): (12-10-2016, Смоленск, договор 1020) (11-10-2016, Смоленск, договор 1021) А в связующей указать их id id_emp id_event 1 3 2 4 Спасибо за терпение:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2017, 11:13 |
|
||
|
Добавление во связанные таблицы
|
|||
|---|---|---|---|
|
#18+
В исходной таблице есть уникальное поле. Предлагаю временно в структуру итоговых таблиц добавить такое же поле (ну только не как ключевое, а просто как индексированное и допускающее NULL). Делать перенос данных в них вместе с этим полем. А при заполнении связующей таблицы устанавливать связь не по равенству кучи содержательных полей, а по этому самому дополнительному полю. Ну и по завершении процесса из целевых таблиц это поле удалить за ненадобностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2017, 11:18 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39419475&tid=1830845]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 122ms |

| 0 / 0 |
