SQL Действительная ссылка на предложение ON для псевдонимов - PullRequest
4 голосов
/ 15 апреля 2020

Я генерирую запрос SQL, и мне нужно получить данные из JSON, хранящиеся в поле моей таблицы. Это выглядит примерно так:

SELECT creation.INSERT_DATE as applicationDateTime,
REPLACE(json_extract(creation.FACILITY_DATA, '$.loanType'), '"', '') AS loanType,
lookup_detail.DETAIL_DESCRIPTION AS financingType 
FROM creation 
LEFT JOIN lookup_detail ON lookup_detail.DETAIL_CODE = loanType

Поэтому я пытаюсь установить соединение с таблицами создание и lookup_detail через поле FACILITY_DATA с данными JSON и псевдонимом loanType для ссылки на поле DETAIL_CODE . Однако я получаю эту ошибку

code:"ER_BAD_FIELD_ERROR"
errno:1054
sqlMessage:"Unknown column 'loanType' in 'on clause'"
sqlState:"42S22"

Могу ли я что-нибудь сделать, чтобы поработать над этим? Я пытался найти действительную ссылку на ON предложение операции JOIN, но я получил только типичные способы.

1 Ответ

3 голосов
/ 15 апреля 2020

Либо повторите выражение в предложении ON, либо присоединитесь к подзапросу.

SELECT c.applicationDateTime, c.loanType, l.financingType
FROM (
    SELECT INSERT_DATE as applicationDateTime,
            REPLACE(json_extract(creation.FACILITY_DATA, '$.loanType'), '"', '') AS loanType
    FROM creation
) AS c
JOIN lookup_detail AS l ON l.DETAIL_CODE = c.loanType

Кроме того, вам, вероятно, следует использовать JSON_UNQUOTE() вместо REPLACE(). Или вы можете использовать оператор ->>, который извлекает и удаляет кавычки за один шаг.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...