0

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
4

1 に答える 1