Çiftleri Katıl Sol

0 Cevap php

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?

0 Cevap