· 8 years ago · Dec 11, 2017, 05:42 PM
1SELECT * FROM homes
2WHERE geolat BETWEEN ??? AND ???
3AND geolng BETWEEN ??? AND ???
4
5CREATE TABLE IF NOT EXISTS `homes` (
6 `home_id` int(10) unsigned NOT NULL auto_increment,
7 `address` varchar(128) collate utf8_unicode_ci NOT NULL,
8 `city` varchar(64) collate utf8_unicode_ci NOT NULL,
9 `state` varchar(2) collate utf8_unicode_ci NOT NULL,
10 `zip` mediumint(8) unsigned NOT NULL,
11 `price` mediumint(8) unsigned NOT NULL,
12 `sqft` smallint(5) unsigned NOT NULL,
13 `year_built` smallint(5) unsigned NOT NULL,
14 `geolat` decimal(10,6) default NULL,
15 `geolng` decimal(10,6) default NULL,
16 PRIMARY KEY (`home_id`),
17 KEY `geolat` (`geolat`),
18 KEY `geolng` (`geolng`),
19) ENGINE=InnoDB ;
20
21[36.13x-120.55][36.13x-120.54][36.13x-120.53]
22[36.12x-120.55][36.12x-120.54][36.12x-120.53]
23[36.11x-120.55][36.11x-120.54][36.11x-120.53]
24
25KEY `geolat_geolng` (`geolat`, `geolng`),
26
27CREATE TABLE IF NOT EXISTS `GeoLocations` (
28`geolat` decimal(10,6) NOT NULL,
29`geolng` decimal(10,6) NOT NULL,
30`home_id` int(10) NULL
31PRIMARY KEY (`geolat`,`geolng`)
32);
33
34SELECT GL.home_id
35FROM GeoLocations GL
36INNER JOIN Homes H
37 ON GL.home_id = H.home_id
38WHERE GL.geolat between X and Y
39 and GL.geolng between X and Y