У меня есть несколько таблиц, которые я объединил и хотел бы присоединиться к таблице с несколькими столбцами. Мой текущий запрос выглядит следующим образом:
select
usrs.firstname, usrs.middleNames, usrs.surname,
if (usrs.sex=0,'Male','Female') as sex,
usrs.DOB,
(YEAR(CURDATE())-YEAR(usrs.DOB)) - (RIGHT(CURDATE(),5)<RIGHT(usrs.DOB,5)) AS age,
birth.townName AS 'birthTown', birth.regionName AS 'birthRegion', birth.countryName AS 'birthCountry',
location.townName AS 'curTown', location.regionName AS 'curRegion', location.countryName AS 'curCountry',
usrs.email, emails.email AS 'alternateEmail',
numbers.number,
usrs.website,
usrs.aboutMe,
family.mother, family.father, family.partner, marital.status, family.aboutFamily,
children.name AS 'childsName'
from ch09.tbl_users usrs
LEFT JOIN vw_town_region_country birth ON birth.townID = usrs.birthPlace
LEFT JOIN vw_town_region_country location ON location.townID = usrs.currentLocation
LEFT JOIN tbl_alternate_emails emails ON emails.userID = usrs.id
LEFT JOIN tbl_contact_numbers numbers ON numbers.userID = usrs.id
LEFT JOIN tbl_family family ON family.userID = usrs.id
LEFT JOIN tbl_marital_status marital ON family.maritalStatusID = marital.id
LEFT JOIN tbl_children children ON family.id = children.familyID
Я поставил весь свой запрос, это может быть немного неправильным или более чистым способом сделать это. Проблема связана с tbl_children, так как это «один ко многим», это приводит к нескольким строкам для одного пользователя для каждого дочернего элемента, который есть у пользователя в таблице tbl_children.
Итак, мои результаты:
userID:1 firstName middleNames surname ....... childsName
userID:1 firstName middleNames surname ....... childsName
userID:1 firstName middleNames surname ....... childsName
Я бы предпочел:
userID:1 firstName middleNames surname ....... childsName childsName2 childsName3
Возможно ли это как-то сделать через соединение? Очевидно, что для меня неприемлемо иметь несколько записей для каждого пользователя в представлении.