Неизвестный столбец в «IN / ALL / ANY subquery» - PullRequest
0 голосов
/ 17 марта 2020

Почему я получаю эту ошибку? Ошибка появляется в предложении OR, но я выбираю gl_ID внутри оператора SELECT.

; DECLARE v_firstDate DATETIME
SET @p_ID = 368
SELECT SUBDATE(NOW(), 1) INTO v_firstDate;
SELECT t_ID, t_firstName, t_lastName
FROM t_table
WHERE
((@p_ID IN (
        SELECT tt_ID
        FROM tt_tableTwo
        INNER JOIN st_stats ON (st_ID = tt_ID)
        INNER JOIN da_data ON (da_ID = st_ID AND da_name IN ("allCompanies", "allglobals"))
    )
))
OR
(
    (gl_ID IN ( //problem is here
        SELECT gl_ID
        FROM gl_globals
        INNER JOIN tr_transport ON (tr_id = gl_caseID AND tr_idOther = @p_ID)
        INNER JOIN co_countries ON (co_ID = gl_ID AND co_ID = @p_ID)
        )
    )
)

Сообщение об ошибке:

Неизвестный столбец 'gl_ID' в 'IN / ALL / ANY подзапрос'

Должен ли я использовать AS или HAVING?

1 Ответ

1 голос
/ 17 марта 2020

gl_ID недоступен в предложении OR, поскольку он не существует в t_table. Внутреннее соединение в первом предложении FROM решает проблему.

; DECLARE v_firstDate DATETIME
SET @p_ID = 368
SELECT SUBDATE(NOW(), 1) INTO v_firstDate;
SELECT t_ID, t_firstName, t_lastName
FROM t_table
INNER JOIN gl_globals ON (t_ID = gl_ID) // fix
WHERE
((@p_ID IN (
        SELECT tt_ID
        FROM tt_tableTwo
        INNER JOIN st_stats ON (st_ID = tt_ID)
        INNER JOIN da_data ON (da_ID = st_ID AND da_name IN ("allCompanies", "allglobals"))
    )
))
OR
(
    (gl_ID IN (
        SELECT gl_ID
        FROM gl_globals
        INNER JOIN tr_transport ON (tr_id = gl_caseID AND tr_idOther = @p_ID)
        INNER JOIN co_countries ON (co_ID = gl_ID AND co_ID = @p_ID)
        )
    )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...