Я пытаюсь извлечь данные из таблиц и объединить несколько строк в один столбец, не повторяя никакой информации.
У меня есть следующие таблицы: профиль, квалификация, проекты.
Profile
pro_id surname firstname
------ ------- ----------
1 John James
2 King Fred
3 Luxury-Yachts Raymond
Qualification
pro_id Degree School Year
------ ------ ------ -----
1 MBA Wharton university 2002
1 LLB Yale University 2001
2 BSc Covington University 1998
2 BEd Kellog University 1995
Projects
pro_id Title Year
------ ------ ------
1 Social Networking 2003
1 Excavation of aquatic debris 2007
2 Design of solar radios 1992
2 Development of expert systems 2011
Я хочу получить всю информацию для каждого человека, причем каждый человек появляется только один раз в результате.Информация о квалификациях и проектах должна быть в отдельной колонке (одна колонка для квалификаций, другая для проектов), разделенных запятыми.Например, результаты для приведенных выше примеров данных должны быть:
1 John James MBA Wharton university 2002, LLB Yale University 2001 Social Networking 2003, Excavation of aquatic debris 2007, Design of Solar panels 2008
2 King Fred BSc Covington University 1998, BEd Kellog University 1995, Msc MIT 2011 Design of solar radios 1992, Development of expert systems 2011
3 Raymond Luxury-Yachts
В настоящее время у меня есть запрос:
SELECT pro_id,
surname,
firstname,
group_concat(degree,school,year) AS qual,
concat(Title,year) AS work
FROM profile,
LEFT JOIN qualification
ON qualification.pro_id = profile.pro_id
JOIN projects
ON projects.pro_id = profile.pro_id
GROUP BY pro_id
Для примеров данных этот запрос приводит к:
1 John James MBA Wharton university 2002, Social Networking 2003
1 John James LLB Yale University 2001, Excavation of aquatic debris 2007
1 John James MBA Wharton university 2002, Social Networking 2003, Excavation of aquatic debris 2007
etc
Примечание: Raymond Luxury-Yachts отсутствует в текущем результате.
Я не хочу дублировать записи результатов.Также, если у фамилии нет записи в таблице квалификаций и проектов, я хочу, чтобы запрос возвращал имя и отображал пустое поле в таблице квалификаций и проектов, а не пропускал их вообще.