Количество подзапросов () для запроса postgres - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть две таблицы с веб-трафиком, которые я присоединяю и визуализирую на карте.

Я пытаюсь написать счетчик, который создает результат запроса с подсчетом количества раз определенного IP-адресапоявляется в журналах.Я думаю, что это примет форму подзапроса, который возвращает количество строк определенной строки, выбранной основным запросом.

Когда я запускаю следующий запрос, я получаю ошибку more than one row returned by a subquery used as an expression.

select
squarespace_ip_addresses.ip,
squarespace_ip_addresses.latitude,
squarespace_ip_addresses.longitude,
st_SetSrid(ST_MAKEPOINT(squarespace_ip_addresses.longitude, squarespace_ip_addresses.latitude), 4326) as geom,
(select count(hostname) from squarespace_logs group by hostname) as counter,
squarespace_logs.referrer
from
squarespace_ip_addresses
left outer join
squarespace_logs
on
squarespace_ip_addresses.ip = squarespace_logs.hostname

Что-то, что мне было предложено, это подзапрос в выборе, который фильтрует по выходным данным основного запроса, выполняет этот запрос для каждой строки.

Есть ли у кого-нибудь какие-то идеи?

1 Ответ

0 голосов
/ 07 декабря 2018

Объединить данные в производной таблице (подзапрос в предложении FROM):

select
    a.ip,
    a.latitude,
    a.longitude,
    st_SetSrid(ST_MAKEPOINT(a.longitude, a.latitude), 4326) as geom,    
    c.count,
    l.referrer
from squarespace_ip_addresses a
left join squarespace_logs l on a.ip = l.hostname
left join (
    select hostname, count(*)
    from squarespace_logs
    group by hostname
    ) c on a.ip = c.hostname
...