每个人:
我完全被这个问题困住了。我尝试将条件添加为 WHERE 语句、SELECT 语句中的 IF 函数以及加入时的 ON 语句。这些都没有产生我想要的结果。
我需要什么:特定位置的 0.5 度纬度和 0.5 度经度范围内的城市列表。
我得到了什么: 两张表 - 一张包含特定位置列表,另一张包含美国人口普查所规定的城市列表。
表 1 包括:
Location Address
City
State
Location Latitude
Location Longitude
示例位置数据:
Street City State Latitude Longitude
774 Emerson Street Palo Alto CA 37.44239044 -122.15956879
表 2 是美国人口普查数据,包括:
City
State
City Latitude
City Longitude
样本城市数据:
City State Latitude Longitude
Palo Alto CA 37.44188309 -122.14302063
Mountain View CA 37.38605118 -122.08385468
Sunnyvale CA 37.36883 -122.0363496
例如,如果我在加利福尼亚州帕洛阿尔托有一个位置,我想要看起来像这样的东西:
Location City State
Palo Alto CA Palo Alto CA
Palo Alto CA Mountain View CA
Palo Alto CA Sunnvyale CA
我试过了:
SELECT d.`City`
,d.`State`
,l.`City`
,l.`StateAbbreviation`
FROM `LocationDirectoryRevised` AS d
LEFT JOIN
`LatLong` AS l
ON d.`City` = l.`City` AND d.`State` = l.`StateAbbreviation`
WHERE l.`Latitude` BETWEEN (d.`Latitude` + 0.5) AND (d.`Latitude` - 0.5)
AND
l.`Longitude` BETWEEN (d.`Longitude` + 0.5) AND (d.`Longitude` - 0.5);
我试过了:
SELECT d.`City`
,d.`State`
,l.`City`
,l.`StateAbbreviation`
FROM `LocationDirectoryRevised` AS d
LEFT JOIN
`LatLong` AS l
ON l.`Latitude` BETWEEN (d.`Latitude` + 0.5) AND (d.`Latitude` - 0.5) &&
l.`Longitude` BETWEEN (d.`Longitude` + 0.5) AND (d.`Longitude` - 0.5)
我试过了:
SELECT d.`City`
,d.`State`
,IF((l.`Latitude` < (d.`Latitude` + 0.5)) && (l.`Latitude` > (d.`Latitude` - 0.5)) && (l.`Longitude` < (d.`Longitude` + 0.5)) && (l.`Longitude` > (d.`Longitude` - 0.5)), l.`City`,NULL)
,l.`StateAbbreviation`
FROM `LocationDirectoryRevised` AS d
LEFT JOIN
`LatLong` AS l
ON d.`City` = l.`City` AND d.`State` = l.`StateAbbreviation`
但是这些并没有产生我想要的结果。我错过了什么?
谢谢。