3 つのテーブルCampaign
, Mall
, MallCampaign
(多対多) があり、1 つまたは複数のモールで利用できる最も近いキャンペーンを注文したいと考えています。
最初のクエリでは; さまざまなモールで利用できるキャンペーンの距離に到達する資格があります。ただし、1 つのキャンペーン (Id=79) だけでなく、すべてのキャンペーンに対して行う必要があります。JOINでなんとかできませんでした。
SELECT
m.MallId,
ROUND(@geo1.STDistance(geography::Point(m.MallLatitude, m.MallLongitude, 4326))/1000,1) AS Distance
FROM
MallCampaign mc
INNER JOIN
Mall m ON m.MallId = mc.MallId
WHERE
m.IsActive != 0 AND mc.CampaignId = 79
ORDER BY
Distance
SELECT
ca.CampaignId, ca.CampaignTitle
FROM
Campaign ca