我有一个小型数据库,其中包含我在下面列出的几个表:
用户
| Name | Type | Extra |
| id | int(10) | Auto Increment
| emailAddress | varchar(150)
| socialNetwrk | enum('G','F','T')
| photoUrl | varchar(255)
| regLat | decimal(10, 8)
| regLng | decimal(11, 8)
| regDate | timestamp
| active | enum('1','0') | default = 1
地点
| Name | Type | Extra
| id | int(10) | Auto Increment
| userID | int(10) | Foreign Key (users.id)
| lat | decimal(10, 8)|
| lng | decimal(11, 8)|
| timestamp | timestamp | CURRENT_TIMESTAMP
我使用以下查询来返回拥有有效帐户的所有附近用户(当前用户除外):
$result = $mysqli->query("
SELECT DISTINCT l.userID
, u.active
, (3959 * acos( cos( radians($lat) )
* cos( radians( lat) )
* cos( radians( lng) - radians($lng) )
+ sin( radians($lat) )
* sin( radians( lat ))
)
) distance
FROM locations l
JOIN users u
HAVING distance < 30
AND userID != $cur_user_id
AND active = 1
ORDER
BY RAND()
")or die($mysqli->error);
我没有错误地收到结果但是我不能让它只包含活动帐户(标记为0而不是1)。
答案 0 :(得分:0)
也许是这样的?
SELECT DISTINCT l.userID
, u.active
, (3959 * acos( cos( radians($lat) )
* cos( radians( lat) )
* cos( radians( lng) - radians($lng) )
+ sin( radians($lat) )
* sin( radians( lat ))
)
) distance
FROM locations l
INNER JOIN users u ON l.userID = u.id
WHERE distance < 30
AND userID != $cur_user_id
AND active = 1
ORDER BY RAND()