I have several tables I need to query in order to get all the rows for a certain user. The tables basically look like this
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
....
Ve onlar email
, phone
vb için verilen bir kişi için tüm bu bilgileri görüntülemek için ihtiyaç vardır dışında benzer tabloları bir grup var, ben (birkaç {[istimal 2)]} ama nasıl çıktı bilgileri emin değilim.
Bu benim sorgu
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
Benim sorun, belli bir kişinin birden fazla telefon numaralarını varsa ben sütunların çoğu birbirlerinin kopyası olacağından bilgileri görüntülemek için nasıl tam olarak emin değilim, bu yüzden e-posta vb sorgu açıkçası fazla 1 satır dönecektir olmasıdır. İşte bu sorgu döndürebilir ne bir örnek
+===========================================================================================+
| 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 |
+-------------------------------------------------------------------+----------+------------+
Nasıl php bilgi gereksiz verilere sahip ve benim sorgu optimize edilebilir olmadan görüntüleyebilir?