как поместить переменную условия where в 1-й слой запроса select - PullRequest
1 голос
/ 10 апреля 2019

Я выбрал опцию в своем запросе, добавив переменную select в ближайший слой запроса.

Получение этой ошибки unknown column h.date из этой строки gb.startTime = h.date

Я знаю причину, так как я поместил h.date в левое соединение выбора. Я думаю, что это что-то не так с договоренностью.

У кого-нибудь есть идея?

это мой запрос:

set @maxBat = 10000;
set @minBat = 0;
select
    h.date,
    (select 
        count(*)
    from(
        select 
            distinct d.id, 
            d.reg,
            ifnull(bc.battleCount, 0) AS battles
        from (
            select 
                ds.id as id,
                ds.reg as reg
            ...
            ) as d
        left join
            (
            select 
                count(gb.id) as battleCount,
                gb.playerID
            from g_battles as gb
            where
                gb.startTime = h.date
            group by gb.playerID
            ) as bc on bc.playerID = d.id
        having battles between @minBat and @maxBat
        ) as e
            where e.reg = h.date
    ) as regbattle
from
    sessiontable as h
where
...

1 Ответ

1 голос
/ 10 апреля 2019

Вы можете использовать внешний запрос данных только в одном подзапросе обратного уровня, не более, например,

Это нормально

select id,(select count(index_) 
from (select index_ from log_sops) as t where t.index_ = h.version) 
from data_sops as h where id = 4

Но это не так

select id,(select count(index_) 
from (select index_ from log_sops where id = h.version) 
as t) 
from data_sops as h where id = 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...