У меня есть несколько таблиц, которые мне нужно запросить, чтобы получить все строки для определенного пользователя.Таблицы в основном выглядят так:
contact
=======
id_contact PK
firstName
lastName
...
contact_phone
===============
id_contact_phone, PK
id_contact, FK
id_phone_type, FK
phone
...
phone_type
============
id_phone_type PK
phone_type
....
И есть несколько таблиц, похожих на те, за исключением того, что они предназначены для email
, phone
и т. Д. Мне нужно отобразить всю эту информацию для данного контакта, яЯ использую несколько LEFT JOIN
, но я не уверен, как выводить информацию.
Это мой запрос
SELECT contact.id_contact, contact.lastName, contact.firstName, contact_email.email, email_type.email_type, contact_phone.phone, phone_type.phone_type, contact_company.contact_title, company.company_name
FROM contact
LEFT JOIN contact_email
ON contact.id_contact = contact_email.id_contact
LEFT JOIN email_type
ON contact_email.id_email_type = email_type.id_email_type
LEFT JOIN contact_phone
ON contact.id_contact = contact_phone.id_contact
LEFT JOIN phone_type
ON contact_phone.id_phone_type = phone_type.id_phone_type
LEFT JOIN contact_company
ON contact.id_contact = contact_company.id_contact
LEFT JOIN company
ON contact_company.id_company = company.id_company
WHERE contact.id_contact = $cid
Моя проблема в том, что если у определенного контакта есть несколько телефонных номеров, электронные письма и т. д. запрос, очевидно, вернет более 1 строки, поэтому я не совсем уверен, как отобразить информацию, так как большинство столбцов будут дубликатами друг друга.Вот пример того, что может вернуть этот запрос
+===========================================================================================+
| id_contact | lastName | firstName | email | email_type | phone | phone_type |
+===========================================================================================+
| 1 | Doe | John | john.doe@123.com | Work | 555-1234 | Work |
+------------+----------+-----------+------------------+------------+----------+------------+
| 1 | Doe | John | john.doe@123.com | Work | 555-2222 | Mobile |
+-------------------------------------------------------------------+----------+------------+
| 1 | Doe | John | jdoe@email.com | Personal | 555-1234 | Work |
+------------+----------+-----------+------------------+------------+----------+------------+
| 1 | Doe | John | jdoe@email.com | Personal | 555-2222 | Mobile |
+-------------------------------------------------------------------+----------+------------+
Как я могу отобразить информацию в php без избыточных данных и можно ли оптимизировать мой запрос?