Я работаю над проблемой грузоперевозок, где у меня есть несколько распределительных центров (DC) и несколько магазинов. У меня есть долгота и широта как для DC, так и для магазинов. Я не уверен, как пройти через 47 разных долготы и широты DC, а 4500+ - хранить долготу и широту, а затем находить кратчайшие расстояния каждого из них. Я думал, что-то вроде этого (но я думаю, что временная таблица неправильно):Найти несколько расстояний в SQL с помощью цикла
CREATE TEMPORARY TABLE tempStores AS (SELECT * FROM wm_stores)
SET i = 0;
WHILE i <= (SELECT COUNT(*) FROM tempStores) - 1 DO
SELECT store_id FROM tempStores LIMIT i,1 INTO thisStoreID;
SELECT store_id FROM tempStores LIMIT i,1;
SET i = i + 1;
END WHILE;
DECLARE storeLat DOUBLE;
DECLARE storeLon DOUBLE;
DECLARE dcLat DOUBLE;
DECLARE dcLon DOUBLE;
DECLARE storeLatRad DOUBLE;
DECLARE storeLonRad DOUBLE;
DECLARE dcLatRad DOUBLE;
DECLARE dcLonRad DOUBLE;
DECLARE R DOUBLE;
DECLARE distance DOUBLE;
SET R = 3961;
SET storeLat = 37.350659; ## <-- Basically Loop this here
SET storeLon = -76.734855; ## <-- Here
SET dcLat = 37.192498; ## <-- Here
SET dcLon = -77.534201; ## <-- And here... instead of having it all hard coded.
SET storeLatRad = PI() * storeLat/180.0;
SET storeLonRad = PI() * storeLon/180.0;
SET dcLatRad = PI() * dcLat/180.0;
SET dcLonRad = PI() * dcLon/180.0;