2015-04-06 142 views
0

目前我已經聯接多個表一起一看,表設置以下列方式:創建視圖?

ACCOUNTS (id, first_name, last_name, etc.) 

CONTACTS (id, name, etc.) 

ACCOUNT_CONTACTS (id, account_id, contact_id) 

EMAIL_ADDR_BEAN_REL (id, bean_id (same as account_id/contact_id), email_address_id) 

EMAIL_ADDRESSES (email_address_id, email_address) 

但是我有兩個表我一起加入這可以有一個ID相關聯的多封郵件,在這裏是結構的一個例子:

表:EMAIL_ADDR_BEAN_REL

id  email_address_id  bean_id 
1   2d5b8    61720 
2   14355b    61720 

表:EMAIL_ADDRESSES

id   email_address 
2db58  [email protected] 
14355b  [email protected] 

創建我的視圖時,我希望能夠檢索這些與一個用戶關聯的多個電子郵件。目前,這是我認爲的代碼,只檢索一個電子郵件:

SELECT AC.id, A.id AS account_id, A.name, A.description, A.industry, A.phone_fax, A.phone_office, A.shipping_address_street, A.shipping_address_city, A.shipping_address_state, A.shipping_address_postalcode, A.shipping_address_country, C.id AS contact_id, C.first_name, C.last_name, C.title, C.department, C.phone_home, C.phone_mobile, C.phone_work, C.primary_address_street, C.primary_address_city, C.primary_address_state, C.primary_address_postalcode, C.primary_address_country, EA.email_address, EA_C.email_address as email_contact 
FROM ACCOUNTS A 
INNER JOIN ACCOUNTS_CONTACTS AS AC ON A.id = AC.account_id 
INNER JOIN CONTACTS AS C ON C.id = AC.contact_id 
LEFT JOIN EMAIL_ADDR_BEAN_REL AS ER ON ER.bean_id = A.id 
AND ER.bean_module = "Accounts" 
LEFT JOIN EMAIL_ADDR_BEAN_REL AS ER_C ON ER_C.bean_id = C.id 
AND ER_C.bean_module = "Contacts" 
LEFT JOIN EMAIL_ADDRESSES AS EA ON ER.email_address_id = EA.id 
LEFT JOIN EMAIL_ADDRESSES AS EA_C ON ER_C.email_address_id = EA_C.id 

這個查詢將返回與同用戶相關聯的兩排,有除了電子郵件地址完全相同的信息,我想有第二個電子郵件地址(或其他電子郵件)添加到同一行,並沒有創建額外的行。

幫助將不勝感激!

回答

0
SELECT ... GROUP_CONCAT(email_address) ... 
    FROM ... 
    GROUP BY A.id; 
+0

這並沒有提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – Jatin

+0

@Jatin:是的。問題是「我想將第二個電子郵件地址(或其他電子郵件)添加到同一行,並且沒有創建額外的行。」沒有爲他編寫所有代碼,這提供了一個缺少的線索 - '' GROUP_CONCAT'加上'GROUP BY'。 –

+0

@RickJames非常感謝你的工作,但是我希望每封電子郵件都在一個單獨的專欄中。例如:email_1:[email protected],email_2:[email protected],email_3:[email protected]等。這將所有電子郵件放在一列中用逗號分隔。 – dantheman