Как вернуть результат наличия выражения в mysql сразу

У меня есть запрос MySQL с подзапросом и псевдонимами

SELECT
k.id,
k.name AS target,
k.account_id,
k.sub_name,
k.budget,
k.cost,
k.other_bids,
k.target AS statusin,
k.rank,
k.set_rank,
(SELECT
COUNT(kw.id)
FROM
keywords AS kw
WHERE
kw.crc = k.crc
GROUP BY kw.crc) AS count_kws,
(SELECT
SUM(IF(s.impressions, s.impressions, 0))
FROM
keywords AS kw
LEFT JOIN
stats AS s ON s.property_id = kw.property_id
AND s.dated BETWEEN '2017-06-17' AND '2017-08-16'
WHERE
kw.crc = k.crc
GROUP BY kw.crc) AS sum_impressions
FROM keywords as k
HAVING IF(ABS(sum_impressions),ROUND(ABS(sum_impressions) /
count_kws, 2),0) < 1

После выполнения запроса, я продолжаю выполнять выражение in in php. Как вернуть результат наличия выражения в mysql сразу

0

Решение

Оберните запрос как подзапрос, добавьте HAVING выражение в SELECT Заявление и использовать его псевдоним в HAVING пункт

SELECT
z.*,
IF(ABS(z.sum_impressions),ROUND(ABS(z.sum_impressions) /
z.count_kws, 2),0) AS myexpr
FROM (
SELECT
k.id,
k.name AS target,
k.account_id,
k.sub_name,
k.budget,
k.cost,
k.other_bids,
k.target AS statusin,
k.rank,
k.set_rank,
(SELECT
COUNT(kw.id)
FROM
keywords AS kw
WHERE
kw.crc = k.crc
GROUP BY kw.crc) AS count_kws,
(SELECT
SUM(IF(s.impressions, s.impressions, 0))
FROM
keywords AS kw
LEFT JOIN
stats AS s ON s.property_id = kw.property_id
AND s.dated BETWEEN '2017-06-17' AND '2017-08-16'
WHERE
kw.crc = k.crc
GROUP BY kw.crc) AS sum_impressions
FROM keywords as k
) AS z
HAVING myexpr < 1
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector