2011-08-27 61 views
0

我有一個查詢需要在大約1M記錄的表上執行。我試圖減少客戶流失,但不幸的是有一個聯盟參與(在我認識到這一點後),所以這可能是另一個問題。MySQL與許多(字段)加入到一個(輔助表)關係

我需要在表中獲取引用3個字段的記錄和數據,每個表都需要從另一個表中獲取一個描述並將其返回到同一記錄中,但是當我執行內部連接時,我想,它只是返回來自其他表格的1個字段,或來自他原始表格的多個記錄。

下面是表的一些屏幕截圖和它們之間的關係:

主要含表記錄(各1個),與醫生的記錄我要拉,包括可在上市長達3碼「分類「表。

Primary Table

所述含表記錄(各1個),與 「實踐」 領域我想拉。

Secondary Tabke

的關係看一眼我談論

enter image description here

我相信,如果執行內部聯接匹配在醫生表中的3場,這它將不得不迭代該表多次拉動每個分類標準代碼..但我仍然無法確定語法來輕鬆提取所有這些代碼而不是其中的一個。

我已經試過這樣:

SELECT 
taxonomy_codes.specialization, 
physicians.provider_last_name, 
physicians.provider_first_name, 
physicians.provider_dba_name, 
physicians.legal_biz_name, 
physicians.biz_practice_city 
FROM 
taxonomy_codes 
INNER JOIN physicians ON physicians.provider_taxonomy_code_1 = taxonomy_codes.taxonomy_codes OR physicians.provider_taxonomy_code_2 = taxonomy_codes.taxonomy_codes OR physicians.provider_taxonomy_code_3 = taxonomy_codes.taxonomy_codes 

首先,查詢攪動了很多,它只返回一個分類特產由此我猜想是因爲,或在連接語句。任何幫助將不勝感激。

謝謝

銀虎

+0

你會更好使用你的'provider_taxonomy_code'列 – JamesHalsall

回答

0

你必須在taxonomy_codes表中多次加入:

SELECT p.provider_last_name, p...., t1.specialization as specialization1, t2.specialization as specialization2, t3.specialization as specialization3 
FROM physicians p 
LEFT JOIN taxonomy_codes t1 ON t1.taxonomy_codes = provider_taxonomy_code_1 
LEFT JOIN taxonomy_codes t2 ON t2.taxonomy_codes = provider_taxonomy_code_2 
LEFT JOIN taxonomy_codes t3 ON t3.taxonomy_codes = provider_taxonomy_code_3 
+0

一個連接表生病試圖做到這一點,讓你知道它是怎麼回事,非常感謝 – Silvertiger

+0

工作就像一個魅力,雖然查詢是42秒傷心。感謝您的幫助。 – Silvertiger

+0

請確保您有一個關於taxonomy_codes.taxonomy_codes的索引 – arnaud576875

相關問題