Mysql

加入具有唯一數據的多個表

  • September 22, 2017

我有 4 張桌子。即crm_entry(id, prefix, firstname, lastname),和crm_phone(id, crm_id, extension,value)_sale_order(id, crm_id)``purchase_order(id, crm_id)

我想要這樣的桌子。。

| 編號 | 前綴 | 名字 | 姓氏 | 聯繫方式 | 銷售(計數)|購買(計數)|

為了獲取這樣的數據,我嘗試了內部聯接並左聯接這樣做。但是當銷售計數超過一個時.. 聯繫人沒有作為銷售(計數)次在行中重複。購買計數相同。我使用的查詢寫在下面:

select  
crm_entry.id, 
crm_entry.prefix, 
crm_entry.firstname,  
crm_entry.lastname,  
group_concate(concat(crm_phone.extension,'-',crm_phone.value)), 
count(sale_order.id),  
count(pur_order.id)  
from crm_entry  
inner join crm_phone on crm_entry.id = crm_phone.crm_id 
inner join sale_order on crm_entry.id = sale_order.crm_id 
inner join pur_order on crm_entry.id = pur_order.crm_id 
group by  crm_entry.id

我只想要一次聯繫電話(聯繫人可以是多個但不能重複)。我該怎麼做?

好的,終於我找到了解決這個問題的中途。

我為聯繫電話、銷售訂單和採購訂單以及 crm_entry 創建了視圖,然後在我的儲存過程中使用了這些視圖和內部連接。這裡的查詢是:

SELECT
 view_crm_entry_phone.*,
 view_crm_entry_sale.sales,
 view_crm_entry_purchase.purchase
FROM
 view_crm_entry_phone
INNER JOIN
 view_crm_entry_sale ON view_crm_entry_sale.id = view_crm_entry_phone.id
INNER JOIN
 view_crm_entry_purchase ON view_crm_entry_purchase.id = view_crm_entry_phone.id

引用自:https://dba.stackexchange.com/questions/186201