MySQL加入许多(字段)到一个(辅助表)关系

时间:2011-08-27 09:30:20

标签: mysql join

我需要在大约1M记录的表上执行查询。我正在努力减少客户流失,但不幸的是有一个UNION参与(在我认为这个加入之后),所以这可能是另一天的问题。

我需要在一个表中引用3个字段的记录和数据,每个字段需要从另一个表中提取描述并将其返回到同一条记录中,但是当我执行内部连接时我正在思考,它只返回1从其他表开始的字段,或原始表中的多个记录。

以下是表格的一些屏幕截图及其关系:

包含我想要提取的医生记录的记录(每个1个)的主表,包括最多可以在“分类”表中列出的3个代码。

Primary Table

包含记录(每个1个)的辅助表,其中包含我要提取的“练习”字段。

Secondary Tabke

快速浏览一下我正在谈论的关系

enter image description here

我认为如果执行一个匹配physicians表中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

首先,查询会产生很多,并且它只返回一个分类法专业结果,我认为这是因为join语句中的OR。任何帮助将不胜感激。

谢谢,

Silver Tiger

1 个答案:

答案 0 :(得分: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