У меня есть две таблицы: местоположения и списки.
местоположенияid
title
address
latitude
longitude
объявленияid
location
info
status
SELECT locations.title,
locations.address,
( 3959 * acos( cos( radians('".$center_lat."') ) * cos( radians( latitude ) ) * cos( radians( longitude ) - radians('".$center_lng."') ) + sin( radians('".$center_lat."') ) * sin( radians( latitude ) ) ) ) AS distance
FROM locations
ORDER BY distance
Это отобразит местоположения в порядке местоположения с предоставленными пользователями широтой и долготой. Работает идеально, но то, что я действительно хочу сделать, это ..
- Перечислите по одному «списку» для каждого местоположения, и пусть местоположения остаются в порядке.
- Если в месте есть более одного «списка», он должен быть полностью случайным.
Было бы лучше сделать все это в одном SQL-запросе? Или заполнить все местоположения, в которых есть хотя бы одно «список», а затем использовать другой запрос, чтобы выбрать случайные «списки» для этого местоположения?
ОБНОВЛЕНИЕ
При условии создания таблицы:
CREATE TABLE `listings` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`token` varchar(4) DEFAULT NULL,
`location` varchar(45) DEFAULT NULL,
`info` varchar(45) DEFAULT NULL,
`status` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=24 DEFAULT CHARSET=utf8;
CREATE TABLE `locations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(45) DEFAULT NULL,
`address_street` varchar(45) DEFAULT NULL,
`addrees_city` varchar(45) DEFAULT NULL,
`address_state` varchar(45) DEFAULT NULL,
`address_zip` varchar(45) DEFAULT NULL,
`latitude` decimal(10,6) DEFAULT NULL,
`longitude` decimal(10,6) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;