2013-12-11 64 views
-3

我想在MySQL中存儲聯繫人,其中一個人可以有很多電子郵件和電話號碼,我已經創建了下圖。多郵件和電話數據庫查詢MySQL

請幫我用最好的查詢來獲取所有的電子郵件和電話聯繫人。

但是,如果這個模式不好,請告訴我一個更好的模式。

我使用下面的查詢這是給我的電子郵件:

SELECT person.id, first_name, last_name, emails.email 
    FROM `person_has_emails` 
LEFT JOIN person ON person.id = person_has_emails.person_id 
LEFT JOIN emails ON person_has_emails.emails_id = emails.id 
    LIMIT 0 , 30 

不過,我想名字,姓氏,電子郵件,PHONE_NUMBER從單一的查詢返回。請指教。要做到這一點

MySQL simple database schema

+2

「請幫助我最好的查詢來獲取所有人的電子郵件和電話聯繫人」您的實際查詢是什麼? – user2196728

+0

我希望來自單個查詢的first_name,last_name,email,phone_number這些列。 – Saqueib

+1

確定你目前有什麼代碼?這是一個相當大且完整的生產「階段」,我們不能爲你做。但是,可以幫助你解決你的代碼中的某些部分。 – James

回答

0

一種方法是:

SELECT A.first_name, A.last_name, C.email, E.phone FROM person A 
LEFT JOIN person_has_emails B on B.person_id = A.id 
LEFT JOIN emails C ON B.emails_id = C.id 
LEFT JOIN person_has_phone D ON D.person_id = A.id 
LEFT JOIN phone E ON D.phone_id = E.id 

但是,這將產生的開銷。電子郵件將與電話號碼配對,所以如果您有一個擁有3封電子郵件和2個電話號碼的人,您將同一個人共有6行。

現在,轉到模式 - 您應該刪除person_has電子郵件和person_has_phone表,並將電子郵件和電話直接鏈接到個人。這是因爲一個電子郵件或電話不能屬於多個人。或者可以嗎?

+0

感謝您的解釋,所以我需要在電子郵件和電話表中添​​加FK person_id。並確保一個電子郵件和電話號碼可以屬於一個人 – Saqueib