PostgreSQL отличается от группы, имея в одном?
У меня возникли проблемы с запросом 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
1 ответ
AFAIK, distance_in_km() будет вызываться только один раз (для каждой строки), если вы используете его с одинаковыми аргументами, поэтому WHERE и ORDER BY не будут оценивать его снова.