Соединение MySQL с отношением многие (поля) к одному (вторичная таблица) - PullRequest
0 голосов
/ 27 августа 2011

У меня есть запрос, который мне нужно выполнить для таблицы, которая составляет примерно 1 млн записей. Я пытаюсь уменьшить отток, но, к сожалению, в нем участвует СОЮЗ (после того, как я пойму, что это объединение), так что это может быть вопросом для другого дня.

Записи и данные, которые мне нужны, чтобы получить справочные 3 поля в таблице, каждое из которых должно извлекать описание из другой таблицы и возвращать его в той же записи, но когда я делал Внутреннее объединение, я думал, что оно либо возвращает только 1 поле из другой таблицы или несколько записей из исходной таблицы.

Вот некоторые скриншоты таблиц и их взаимосвязи:

Первичная таблица, содержащая записи (по 1 каждая) с записью врача, которую я хочу получить, включая до 3 кодов, которые могут быть перечислены в таблице "Таксономия".

Primary Table

Вторичная таблица, содержащая записи (по 1 каждая) с полем «Практика», которое я хочу получить.

Secondary Tabke

Быстрый взгляд на отношения, о которых я говорю

enter image description here

Я предполагаю, что если выполнить внутреннее объединение, соответствующее 3 полям в таблице врачей, ему придется многократно повторять эту таблицу, чтобы получить каждый код таксономии ... но я все еще не могу даже понять синтаксис, чтобы легко извлечь все эти коды вместо 1 из них.

я пробовал это:

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

Во-первых, запрос многократно перемешивается, и он возвращает только один специальный результат таксономии, который, как я предполагаю, связан с ИЛИ в операторе соединения. Любая помощь будет принята с благодарностью.

Спасибо,

Серебряный тигр

1 Ответ

0 голосов
/ 27 августа 2011

Вы должны присоединиться к таблице 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...