場所とリストの2つのテーブルがあります。
場所
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
これにより、ユーザーが提供した緯度と経度を使用して、場所が場所順に一覧表示されます。完璧に動作しますが、私が本当にやりたいのは..
- 場所ごとに1つの「リスト」をリストし、場所を順番に残します。
- 場所に複数の「リスト」がある場合、それは完全にランダムになります。
これをすべて1つのSQLクエリで実行する方がよいでしょうか。または、少なくとも1つの「リスト」があるすべての場所にデータを入力してから、別のクエリを使用して、その場所のランダムな「リスト」を選択しますか?
アップデート
提供される作成テーブル:
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;