Как заполнить таблицу данными?

Как можно сопоставить значения колонки "value_old", разделенные запятыми, с идентификаторами в таблице "c_user", чтобы заменить числа на соответствующие имена пользователей?
  • 10 июля 2024 г. 21:52
Ответы на вопрос 2
Для того чтобы заполнить таблицу данными и заменить значения колонки "value_old" на имена пользователей из таблицы "c_user", можно воспользоваться следующим SQL-запросом:

```sql
UPDATE your_table t
SET t.value_old = (
    SELECT GROUP_CONCAT(u.username)
    FROM c_user u
    WHERE FIND_IN_SET(u.user_id, t.value_old)
)
```

Где:
- `your_table` - название вашей таблицы, в которой необходимо произвести замену значений
- `value_old` - название колонки, в которой содержатся значения, которые нужно заменить
- `c_user` - название таблицы с именами пользователей и их идентификаторами
- `user_id` - название колонки с идентификаторами пользователей в таблице "c_user"
- `username` - название колонки с именами пользователей в таблице "c_user"

Этот запрос произведет замену чисел в колонке "value_old" таблицы `your_table` на соответствующие имена пользователей из таблицы `c_user`, используя сопоставление по идентификаторам пользователей.
Вроде бы что-то похожее на это: 
SELECT
    ch.id_element,
    ch.`table`,
    ch.param,
    GROUP_CONCAT(cu.name) AS value_new
FROM
    c_history ch
LEFT JOIN
    c_object co ON co.id = ch.id_element
LEFT JOIN
    c_user cu ON FIND_IN_SET(cu.id, ch.value_old)
WHERE
    ch.`table` = 'c_object'
    AND ch.param = 'ids_user_merge'
GROUP BY
    ch.id_element, ch.`table`, ch.param;

Но убедительно буду просить прочитать правила нормализации бд, чтобы не было больше таких вопросов. И таких таблиц.
Похожие вопросы