Получение данных из нескольких таблиц в одну строку при объединении некоторых значений
Я пытаюсь извлечь данные из таблиц и объединить несколько строк в один столбец, не повторяя никакой информации.
У меня есть следующие таблицы: профиль, квалификация, проекты.
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 отсутствует в текущем результате.
Я не хочу дублировать записи результатов. Также, если у фамилии нет записи в таблице квалификаций и проектов, я хочу, чтобы запрос возвращал имя и отображал пустое поле в таблице квалификаций и проектов, а не пропускал их полностью.