Как показано на рисунке, у меня есть база данных со столбцами имени, адреса, широты, долготы, даты и недели.
Я пытался использовать этот запрос ( 1-е местоположение в качестве начальной точки):
SELECT
id,
(6371 * ACOS(COS(RADIANS(3.086349)) * COS(RADIANS(lat)) * COS(RADIANS(lon) - RADIANS(101.701172)) + SIN(RADIANS(3.086349)) * SIN(RADIANS(lat)))) AS distance
FROM
locations
HAVING distance <= 0.5
ORDER BY distance
LIMIT 0 , 20
Это покажет мне записи в ЗЕЛЕНОМ, но также включает в себя запись в КРАСНОМ, которая находится в пределах того же радиуса, но с другой недели (так что я знаю Запрос не работает).
Я также пробовал этот запрос (1-е место в качестве начальной точки):
SELECT
id,
(6371 * ACOS(COS(RADIANS(3.086349)) * COS(RADIANS(lat)) * COS(RADIANS(lon) - RADIANS(101.701172)) + SIN(RADIANS(3.086349)) * SIN(RADIANS(lat)))) AS distance
FROM
locations
WHERE
week = 13
GROUP BY id
HAVING distance < 0.5
ORDER BY distance
LIMIT 0 , 20;
Возвращает все записи в ЗЕЛЕНОМ только без записи в КРАСНОМ, но не возвращает показать записи в ОРАНЖЕ.
Я хочу показать все маркеры на картах Google за 13-ю неделю, которые находятся в пределах RADIUS <или = до 500 метров от любого другого маркера с этой недели </strong> (имеется в виду он должен показывать все записи в ЗЕЛЕНОМ и ОРАНЖЕВОМ, но не в КРАСНОМ), так как есть другие маркеры, которые находятся близко друг к другу (те, которые оранжевого цвета, находятся в пределах 500 метров друг от друга, но на расстоянии более 500 метров от другого кластера); они не будут отображаться, если я установлю начальную точку.
Есть ли запрос, который я могу выполнить, чтобы получить то, что я хочу, или есть какой-то другой способ получить то, что я хочу?
Каждый пост То, что я прочитал здесь в течение прошлой 1 недели, показывает объяснение с отправной точкой.
Любая помощь будет принята с благодарностью. Спасибо.
MySQL: версия 15.1 Distrib 10.3.17-MariaDB, для Linux (x86_64) с использованием readline 5.1
Текст БД:
CREATE TABLE IF NOT EXISTS `locations` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(150) NOT NULL,
`address` varchar(255 NOT NULL,
`lat` float(10,6) NOT NULL,
`lon` float(10,6) NOT NULL,
`date` date NOT NULL,
`week` int(2),
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
INSERT INTO `locations` (`id`, `name`, `address`, `lat`, `lon`, `description`, `date`, `week`) VALUES
('1', 'Vantage Point Condominium', 'Jalan 4/125, Taman Desa Petaling, 57100, Kuala Lumpur, Malaysia', '3.086349', '101.701172', 'My Current place of living.', '2020-03-29', '13');
('2', 'Old Mans House', '14 Jalan SS3/50, Kelana Jaya, 47300, Petaling Jaya Selangor, Malaysia', '3.093787', '101.618103', 'My old place of living.', '2020-03-27', '13');
('3', 'KotaRaya Complex', '10 Jalan Tun Tan Cheng Lock, City Centre, 50050, Kuala Lumpur, Malaysia', '3.146026', '101.698051', 'Place to send money overseas.', '2020-03-25', '13');
('4', 'Plaza Salak Park', '2, Jalan 1/125e, Taman Desa Petaling, 57100 Kuala Lumpur, Malaysia', '3.084877', '101.705055', 'Shopping Mall.', '2020-03-26', '13');
('5', 'NSK Kuchai Lama', '43, Jalan Kuchai Maju 13, Kuchai Entrepreneurs Park, 58200 Kuala Lumpur, Malaysia', '3.084630', '101.691040', 'Wholesale Market.', '2020-03-28', '13');
('6', 'Al-Madinah International University', 'Pusat Perdagangan Salak II, No, 18-G, Jalan 2/125e, Taman Desa Petaling, 57100, Kuala Lumpur, Malaysia', '3.084320', '101.700447', 'University.', '2020-03-27', '13');
('7', 'Amadesa Resort Condominium', 'Jalan 5/125, Taman Desa Petaling, 57100, Kuala Lumpur, Malaysia', '3.084866', '101.702286', 'Condominium.', '2020-03-27', '13');
('8', 'Old Western Cow Boy Steak House', 'No. 30, Jalan 9/125d, Taman Desa Petaling, 57100 Kuala Lumpur, Malaysia', '3.082639', '101.703545', 'Western Food Restaurant.', '2020-03-28', '13');
('9', 'MacDonalds Kuchai Lama', 'Jalan 1/116B, Off, Jalan Kuchai Lama, Kuchai Entrepreneurs Park, 58200, Kuala Lumpur, Malaysia', '3.087819', '101.690094', 'Fast food outlet.', '2020-03-28', '13');
('10', 'Maybank Kuchai Lama', '1 & 3, Jalan Kuchai Maju 1, Kuchai Entrepreneurs Park, 58200, Kuala Lumpur, Malaysia', '3.091419', '101.689445', 'Local Bank.', '2020-03-26', '13');
('11', 'Nidoz Residences', 'No.22A, Jalan 2/125, Desa Petaling, 57100 Kuala Lumpur, Malaysia', '3.085217', '101.700150', 'New Condo with too much noise', '2020-03-21', '12');
('12', 'Terminal Bersepadu Selatan', 'Jalan Terminal Selatan, Bandar Tasek Selatan, 57100, Kuala Lumpur, Malaysia', '3.077946', '101.711288', 'Interstate Bus Terminal.', '2020-03-20', '12');
ALTER TABLE `locations`
ADD PRIMARY KEY (`id`);
ALTER TABLE `locations`
MODIFY `id` int(10) NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=1;