В MySQL возникают проблемы при извлечении данных из двух таблиц путем выполнения соединения по столбцу JSON - PullRequest
0 голосов
/ 02 января 2019

У меня есть две таблицы пользователей и группы пользователей, и между ними нет жестких отношений. Таблица users содержит столбец usergroup, который содержит несколько usergroup_id из таблицы usergroups в формате JSON, а таблица usergroups содержит столбцы id и usergroup_title. Теперь требуется получить список всех пользователей с помощью одного запроса, который должен содержать пользовательские данные usergroup_title из таблицы usergroups, соответствующей значениям JSON.

Я пытался выполнить приведенный ниже запрос, но получаю сообщение об ошибке, что функция JSON_CONTAINS не существует. Код ниже:

SELECT 
u.user_id,
g.id,
g.usergroup_title
FROM user u
LEFT JOIN usergroups g on JSON_CONTAINS(u.usergroup_id, CAST(g.id as JSON), '$')

Я получаю сообщение об ошибке JSON_CONTAINS функция не делает. Я хочу данные в следующем формате:

array("user_id" => 1, "usergroup" => ["admin", "customer", "seller"])

1 Ответ

0 голосов
/ 02 января 2019

Поскольку мы знаем, что это ужасный способ иметь дело со многими отношениями к одному, давайте разберемся с грязью:

SELECT 
u.user_id,
g.id,
g.usergroup_title
FROM user u
LEFT JOIN usergroups g on u.usergroup_id LIKE CONCAT('%"',g.id,'"%')

Это должно сработать, если ваши идентификаторы рассматриваются как строка в вашем JSON,иначе вам нужно заменить детали '%"' и '"%' чем-то вроде '%:' и ',%'.

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