我有一张合作伙伴表,我想找到最近的点,或者找一个简单的方法来测量距离。
这是我的atm。我目前的位置是(1500,1300)
SELECT `key` , `name` , SQRT( (
`x` - 1500
) + ( `z` - 1300 ) )
FROM `stargates`
WHERE 1
我得到空的返回值
我正在处理x和z合作的平坦世界。
表:
CREATE TABLE IF NOT EXISTS `locations` (
`key` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`x` int(11) NOT NULL,
`z` int(11) NOT NULL,
`discription` varchar(255) DEFAULT NULL,
`status` int(11) NOT NULL DEFAULT '1',
`created` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`key`)
)
INSERT INTO `stargates` (`key`, `name`, `x`, `z`, `discription`, `status`, `created`, `modified`) VALUES
(1, 'PlaceA', -4461, 73, -2612, NULL, 0, '2014-07-07 14:10:35', '2014-07-07 14:10:35'),
(3, 'PlaceB', 1156, 66, -1915, NULL, 0, '2014-07-07 14:10:35', '2014-07-07 14:10:35'),
(5, 'PlaceC', 4541, 71, 3091, NULL, 0, '2014-07-07 14:10:35', '2014-07-07 14:10:35'),
(7, 'PlaceD', 5, 118, -66, NULL, 0, '2014-07-07 14:10:35', '2014-07-07 14:10:35'),
(9, 'PlaceE', -4441, 72, -2604, NULL, 0, '2014-07-07 14:10:35', '2014-07-07 14:10:35'),
(11, 'PlaceF', 71, 75, -66, NULL, 0, '2014-07-07 14:10:35', '2014-07-07 14:10:35')
答案 0 :(得分:4)
你错过了你想要的公式的重要部分
SQRT( POWER('x' - 1500, 2) + POWER( 'z' - 1300, 2 ) )
请注意,一般形式是
SQRT( POWER('x2' - 'x1', 2) + POWER( 'z2' - 'z1', 2 ) )
因此,请确保您使用的是x1,z1参考点。这将为您提供距离点(1500,1300)的距离。
答案 1 :(得分:0)
您在x-1550
和z-1330
中缺少一个正方形,距离为sqrt(x^2+y^2)