MySQL запрос для преобразования нескольких строк в одну строку - PullRequest
0 голосов
/ 05 февраля 2020

Таблица 1 enter image description here Таблица 2 enter image description here Запрос, который я использую для получения первой таблицы из моей базы данных:

use mydb;
select doc_id,first_name,title,overall_experience_years,address,description_,Price,degree_name from doctor_profile d inner join doctor_education e on d.doc_id=e.doctor_id inner join doc_degree_master m1 on m1.id=e.doc_degree_master_id inner join doctor_specialization s on d.doc_id=s.doctor_id inner join doc_specialization_master m2 on m2.id=s.doc_Specialization_master_id inner join doctor_pricing p on p.doctor_id=d.doc_id;

Я хочу получить Данные в таблице 2 формы. Какой запрос мне написать?

Это мой модельный класс в springboot:

@Id
private Long Id;
private String Name;
private String Title;
private int OverallExperience;
private BigDecimal Price;
private String Address;
private List<String> Specialities;
private List<String> Degrees;

Ответы [ 2 ]

3 голосов
/ 05 февраля 2020

См. Функцию агрегирования GROUP_CONCAT(expr).

select doc_id
     , first_name
     , title
     , overall_experience_years
     , address
     , group_concat(distinct description_) as description_
     , Price
     , group_concat(distinct degree_name) as degree_name
  from doctor_profile d
  join doctor_education e on d.doc_id = e.doctor_id
  join doc_degree_master m1 on m1.id = e.doc_degree_master_id
  join doctor_specialization s on d.doc_id = s.doctor_id
  join doc_specialization_master m2 on m2.id = s.doc_Specialization_master_id
  join doctor_pricing p on p.doctor_id = d.doc_id
 group by doc_id
        , first_name
        , title
        , overall_experience_years
        , address
        , Price
0 голосов
/ 06 февраля 2020

Если вы хотите объединить более 1 значения, вы можете использовать функцию group_concat (). Но когда вы хотите объединить уникальные значения, вы должны использовать разные.

group_concat (отличное имя_таблицы) и использование группы по другому имени_таблицы, кроме (description_ и степень_имя)

select doc_id, first_name, title, overall_experience_years, address
, group_concat(distinct description_) as description_ , Price
, group_concat(distinct degree_name) as degree_name
      from doctor_profile d
      join doctor_education e on d.doc_id = e.doctor_id
      join doc_degree_master m1 on m1.id = e.doc_degree_master_id
      join doctor_specialization s on d.doc_id = s.doctor_id
      join doc_specialization_master m2 on m2.id = s.doc_Specialization_master_id
      join doctor_pricing p on p.doctor_id = d.doc_id
     group by doc_id, first_name, title, overall_experience_years, address, Price
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...