2013-05-13 3 views
1

У меня проблема с пониманием запросов php-mysql. Используя этот тип запроса, я пытаюсь распечатать всех лиц (inco_person) с электронными письмами (inco_phone) и номерами телефонов, назначенными им (inco_email).Агрегирование многих таблиц и отображение определенных столбцов как один

Но что, если есть более одного номера телефона и адреса электронной почты относительно идентификатора одного человека?

Теперь я получаю 4 строки для одного человека с разными наборами электронных писем и телефонных номеров. Есть ли способ, чтобы заполнить определенные поля, если их больше одного?

$gsf = mysqli_query($connector2 ,"SELECT * FROM inco_person 
LEFT JOIN inco_person_position ON inco_person_position.person_id=inco_person.personid 
LEFT JOIN inco_position ON inco_position.positionid=inco_person_position.position_id 
LEFT JOIN inco_basic ON inco_basic.basicid=inco_person_position.company_id 
LEFT JOIN inco_phone ON inco_phone.pp_id=inco_person_position.ppid 
LEFT JOIN inco_email ON inco_email.pp_id=inco_person_position.ppid 
ORDER BY inco_person.personid") or die(mysqli_error($connector2)); 

Результат:

ID Firstname Lastname Position  E-Mail  Phone 

1 Jacek  Kowalski President 68-3284099 [email protected] 

1 Jacek  Kowalski President 661320993 [email protected] 

1 Jacek  Kowalski President 661320993 [email protected] 

1 Jacek  Kowalski President 68-3284099 [email protected] 

ответ

0

Просто добавьте group by inco_person.personid и читать телефонные номера через group_concatGROUPING

+0

Отлично, потребовалось некоторое время, чтобы получить его, но, конечно, он работает. – jakubplus

0

Вы можете использовать GROUP BY и GROUP_CONCAT

SELECT inco_person.personid, GROUP_CONCAT(inco_email.email SEPARATOR ' ') FROM inco_person 
LEFT JOIN inco_person_position ON inco_person_position.person_id=inco_person.personid 
LEFT JOIN inco_position ON inco_position.positionid=inco_person_position.position_id 
LEFT JOIN inco_basic ON inco_basic.basicid=inco_person_position.company_id 
LEFT JOIN inco_phone ON inco_phone.pp_id=inco_person_position.ppid 
LEFT JOIN inco_email ON inco_email.pp_id=inco_person_position.ppid 
GROUP BY inco_person_position.person_id ORDER BY inco_person.personid 
Смежные вопросы