Вы можете попробовать (в этом примере используется MySQL user defined variables важно для этого запроса, MySQL знает использовать значение вне из подзапроса для СРАВНЕНИЕ)
SELECT _atc_codes.se, _atc_codes.code,
@code_substr:=SUBSTR(_atc_codes.code, 1, 1) AS code_substr,
(
SELECT se
FROM _atc_codes
WHERE [email protected]_substr
LIMIT 1
) AS code_substr_se
FROM diagnoses
JOIN _atc_codes ON _atc_codes.id = diagnoses.atc_code
Или (в этом примере присваивается псевдоним таблицы внешней таблице, который используется в подзапросе, поскольку вы используете таблицу дважды, а MySQL не знает, какую таблицу ссылаться в SUBSTR
в подзапрос):
SELECT outer_codes .se, outer_codes .code,
SUBSTR(outer_codes .code, 1, 1) AS code_substr,
(
SELECT se
FROM _atc_codes
WHERE code=SUBSTR(outer_codes.code, 1, 1)
LIMIT 1
) AS code_substr_se
FROM diagnoses
JOIN _atc_codes AS outer_codes ON outer_codes.id = diagnoses.atc_code
Третий способ будет добавление второго JOIN
, а затем группа ResultSet как
SELECT _atc_codes_1st.se, _atc_codes_1st.code,
SUBSTR(_atc_codes_1st.code, 1, 1) AS code_substr,
MAX(_atc_codes_2nd.se) AS code_substr_se
FROM diagnoses
JOIN _atc_codes AS _atc_codes_1st ON _atc_codes_1st.id = diagnoses.atc_code
JOIN _atc_codes AS _atc_codes_2nd ON _atc_codes_2nd.code = SUBSTR(_atc_codes_1st.code, 1, 1)
GROUP BY _atc_codes_1st.se, _atc_codes_1st.code,code_substr
Принятие решения, какой вариант использовать, было бы лучше, чтобы добавить EXPLAIN
к вашему запрос, чтобы показать план выполнения. Удачи.
Вы хотите добавить с существующим соединением или создать другой столбец запроса с подстрокой из значения другого столбца? –
Я хочу добавить столбец в исходный запрос SELECT. – silkfire
Не могли бы вы заменить изображения простым текстом? Крошечный шрифт трудно читать и невозможно скопировать и вставить в sqlfiddle. Еще лучше сделайте свой собственный sqlfiddle с образцами данных. – Barmar