У меня возникли проблемы с запросом PostgreSQL
То, что я хочу, это список "Кампаний", упорядоченных по расстоянию и в пределах минимального расстояния от местоположения [in_lat, in_lng, in_radius]
Теперь я получаю расстояние (с distance_in_km (...)) дважды. Один раз для заказа, один раз для проверки, находится ли кампания в пределах моего предпочтительного радиуса.
Также возможно, что в кампании есть несколько записей "Campaignreceiver" (receivetype [EMAIL, WEBSITE и т. Д. ...])
И я хочу получить кампанию только один раз. следовательно ОТЛИЧАЕТСЯ НА
Таким образом, вопрос в том, как я могу заставить когда-нибудь, например, "ГДЕ расстояние
ЛЮБАЯ ПОМОЩЬ ОЧЕНЬ ЦЕНА !!!
SELECT DISTINCT ON (c.campaign_uuid, distance)
c.campaign_uuid,
prl.lat,
prl.long,
distance_in_km(prl.lat, prl.long, in_lat, in_lng) AS distance
FROM
usercampaignrelations AS ucr
LEFT JOIN
campaignreceivers AS cr
ON
ucr.usercampaign_uuid = cr.usercampaign_uuid
LEFT JOIN
campaigntargetgrouprelations AS ctg
ON
cr.campaigntargetgroup_uuid = ctg.campaigntargetgroup_uuid
LEFT JOIN
campaigns AS c
ON
ucr.campaign_uuid = c.campaign_uuid
LEFT JOIN
companycampaignrelations AS cc
ON
c.campaign_uuid = cc.campaign_uuid
LEFT JOIN
pointradiuslocations AS prl
ON
c.location_uuid = prl.location_uuid
WHERE
ucr.user_uuid = in_user_uuid
AND
(cr.status = 'SENT' OR cr.status = 'RETRIEVED')
AND
distance_in_km(prl.lat, prl.long, in_latitude, in_longtitude) < in_radius
ORDER BY
distance
LIMIT
in_limit