В настоящее время у нас есть три таблицы
пользователей (используется для хранения основной информации)
- id -> PK
- имя-> Индекс
- фамилия -> Индекс
И у нас есть еще много полей в этой таблице, обычно используемых для фильтрации данных
user_titles (которая является таблицей отношений «один ко многим» с Таблицей А. Что мы обычно используем для хранения заголовков пользователей в таблице А. У одного пользователя может быть несколько заголовков, из которых один может быть первичным, а другой - вторичным)
- id
- user_id (от FK до таблицы A)
- title_id (от FK до таблицы заголовков, в которой мы храним все названия заголовков)
- is_primary (enum -> 'primary', 'primary')
user_speciality (Таблица - это отношение один ко многим с таблицей пользователя, в которой мы храним основнойспециальность и дополнительная специальность пользователей)
- id -> PK
- user_id -> (FK, ссылка натаблица пользователей)
- specialty_id -> (FK, ссылка на таблицу специальностей, в которой мы храним информацию о специальностях)
- is_primary -> (enum -> 'primary', 'primary')
Итак, выше приведена таблица ограничений, которую мы имеем, и при поиске мы должны перечислить всех пользователей с выбранной специальностью и названиями.
На основе этой структуры таблицы мы выбираем данные, как показано ниже: запрос
> SELECT `user_titles`.`title_id`,`user_titles`.`is_primary`,`user_speciality`.`speciality_id`,`user_speciality`.`is_primary`,`users`.`firstname`,`users`.`lastname`FROM `users`, `user_titles`,`user_speciality` where `user_speciality`.`user_id`=`users`.`id` and `user_titles`.`user_id`=`users`.`id`
Но когда мы перечисляем данные, мы получаем несколько строк для пользователей, если у пользователей есть дополнительные названия или специальности.В основном мне нужно, чтобы данные были в формате ниже.
Когда мы используем group_concat, приведенный выше запрос вызывает ошибку, которая говорит, что group_concat
или group by
невозможны.
user_id, title_id(primary), title_ids(secondary titles with comma seperated), user.firstname, user.lastname, speciality_id(primary), specialty_id(secondary id's with comma separated)
Мы могли бы легко получить эту структуру, если бы мы сохраняли названия и идентификаторы специальностей в таблице пользователей со значениями, разделенными запятыми, и записывали подобный запрос, но у нас огромный объем данных и сомнительная производительностькак запрос на эти кучу данных.
Пожалуйста, помогите нам решить проблему.