Допустим, у меня есть таблица данных «посещения», которая содержит четыре столбца: идентификатор пациента и три закодированных медицинских диагноза.Каждый ряд представляет визит к врачу.Что-то вроде
PATIENTID DIAGNOSIS1 DIAGNOSIS2 DIAGNOSIS3
0001 0234 0020 NA
0002 9383 NA NA
0003 5983 8372 7747
0004 1143 NA NA
У меня также есть таблица 'class', которая классифицирует болезни по трем категориям:
DIAGNOSIS CLASS
0234 1
0020 3
9383 2
5983 2
8372 1
7747 1
1143 3
Я хотел бы закончить с таблицей, которая дает классификацию каждогодиагностика;что-то вроде
PATIENTID DIAGNOSIS1 DIAGNOSIS2 DIAGNOSIS3 CLASS1 CLASS2 CLASS3
0001 0234 0020 NA 1 3 NA
0002 9383 NA NA 2 NA NA
0003 5983 8372 7747 2 1 1
0004 1143 NA NA 3 NA NA
Какой самый эффективный способ сделать это?Мое первое предположение состоит в том, чтобы повторно соединять «посещения» и «класс» в следующем порядке:
SELECT
v3.DIAGNOSIS1,
v3.DIAGNOSIS2,
v3.DIAGNOSIS3,
v3.CLASS1,
v3.CLASS2,
c3.CLASS AS CLASS3
FROM
(
SELECT
v2.DIAGNOSIS1,
v2.DIAGNOSIS2,
v2.DIAGNOSIS3,
v2.CLASS1
c2.CLASS AS CLASS2
FROM
(
SELECT
v1.DIAGNOSIS1,
v1.DIAGNOSIS2,
v1.DIAGNOSIS3,
c1.CLASS AS CLASS1
FROM visit AS v1
LEFT JOIN class AS c1
ON (v1.DIAGNOSIS1=c1.DIAGNOSIS)
)
AS v2
LEFT JOIN class AS c2
ON (v2.DIAGNOSIS2=c2.DIAGNOSIS)
)
AS v3
LEFT JOIN class AS c3
ON (v3.DIAGNOSIS3=c3.DIAGNOSIS)
Но это грязно (особенно с ростом числа столбцов «диагноза») и, вероятно, довольно медленно.Есть ли способ лучше?