powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Обновление таблицы many to many
11 сообщений из 11, страница 1 из 1
Обновление таблицы many to many
    #39907922
illusion.k24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, подскажите, как правильно обновить таблицу many to many?

Таблица 1: city
Поля: id title

Таблица 2: metro
Поля: id title

Таблица 3: city_metro
Поля: id_city id_metro

Допустим изначально в таблице 3 были след. значения:
id_city id_metro
0 1
0 2
0 3

После обновления хочу получить:
id_city id_metro
0 3
0 4
0 5


Как правильно составить запрос, чтобы обновить таблицу?
Есть идея, но не уверен, что она правильная и так делать грамотно.

1. Удалить все значения из таблицы с id_city = 0 и записать новые.

Спасибо.
...
Рейтинг: 0 / 0
Обновление таблицы many to many
    #39907934
dvk92
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
illusion.k24,

Распишите задачу, непонятно откуда и как между собой связаны данные значения.

update table

set id_metro=case
when id_metro=1 then 3
when id_metro=2 then 4
when id_metro=4 then 5 else id_metro end



where id_city=0
...
Рейтинг: 0 / 0
Обновление таблицы many to many
    #39907944
illusion.k24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Распишите задачу, непонятно откуда и как между собой связаны данные значения.

Есть таблица городов и таблица метро.

Для примера:
Таблица 1:
id title
0 Санкт-Петербург

Таблица 2:
id title
0 Автово
1 Академическая
...

Таблица 3, которая имеет связь с таблицей 1:
id_city id_metro
0 0
0 1
...


Задача: С формы сайта получить данные по городу и станциям метро. Если такая запись уже существует, то обновить данные.
Для примера опять же.
В городе Спб, есть 3 магазина, которые расположены на станициях А, Б, В.
Спустя некоторое время магазин на станции Б закрылся, но открылся на станции Г, Д, Е.
Получается, что сейчас в таблице 3 должно быть 5 записей. Две старые А, В и три новые Г, Д, Е.

Вот здесь как раз таки вопрос, как правильно это всё дело обновить?
Пишу на php.

Из озвученных идей это удалить из таблицы 3 все значения по id_city и записать новые.


Ваш пример для моего случая не подойдёт ведь? Т.к. записей для Одного города может быть больше 3?
Повторюсь, что пишу на php.
...
Рейтинг: 0 / 0
Обновление таблицы many to many
    #39907945
dvk92
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
illusion.k24,

Оператор Merge Вам в помощь, так же вам понадобиться как-то определять закрыт магазин или открыт. Колонка в БД со статусом закрыт/окрыт (0/1)
...
Рейтинг: 0 / 0
Обновление таблицы many to many
    #39907948
illusion.k24
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можете пример показать?
По примерам из поисковика не совсем понятно, что смерживать в моём случае.
...
Рейтинг: 0 / 0
Обновление таблицы many to many
    #39907950
dvk92
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
illusion.k24,

Суть логики простая, если запись в таблице имеется - то обновить ее, допустим статус с открыт на закрыт.
Если записи нет - добавить ее.

https://www.sql.ru/blogs/oracleandsql/1927
...
Рейтинг: 0 / 0
Обновление таблицы many to many
    #39907957
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
illusion.k24 , Вас просили расписать задачу. В частности, предполагалось, что будет дано исходное состояние таблиц (включая структуру, включая внешние ключи при наличии, и данные без многоточий), входные данные для изменения (без многоточий), конечное состояние таблиц (для именно этих данных), и объяснение, почему именно так.

dvk92
Суть логики простая, если запись в таблице имеется - то обновить ее

Не обманывайте человека. Так делает INSERT .. ODKU. А вот MERGE тупо удаляет старый дубль и на его место пишет новый.
...
Рейтинг: 0 / 0
Обновление таблицы many to many
    #39908137
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dvk92
Оператор Merge Вам в помощь
Нет его в MySQL.
...
Рейтинг: 0 / 0
Обновление таблицы many to many
    #39908268
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft
Нет его в MySQL.
Угу, в MySQL он известен под фамилией REPLACE.
...
Рейтинг: 0 / 0
Обновление таблицы many to many
    #39908491
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как правильно составить запрос, чтобы обновить таблицу?


Это связь многие-ко многим, там нечего обновлять, у тебя там нет ни одного атрибута.

Удаляешь записи для ненужных, старых city_id или metro_id, вставляешь для новых.
...
Рейтинг: 0 / 0
Обновление таблицы many to many
    #39908493
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
illusion.k24
А можете пример показать?
По примерам из поисковика не совсем понятно, что смерживать в моём случае.



Не нужен тут ни replace, ни merge.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Обновление таблицы many to many
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]