Boa tarde pessoal peguei um exemplo na net que estou querendo desenvolver, mas to travado e a tarde toda não consegui progredir,
Peguei o exemplo deste site: http://www.phpit.com.br/artigos/como-procurar-locais-proximos-usando-sql.phpit
montei a tabela do exemplo:
CREATE TABLE `enderecos` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nome` VARCHAR( 60 ) NOT NULL ,
`endereco` VARCHAR( 80 ) NOT NULL ,
`lat` FLOAT( 10, 6 ) NOT NULL ,
`lng` FLOAT( 10, 6 ) NOT NULL
) ;
os dados do exemplo:
INSERT INTO `enderecos` (`id`, `nome`, `endereco`, `lat`, `lng`) VALUES
(NULL, 'Shopping Iguatemi Porto Alegre', 'Av. João Wallig, 1800 - Passo da Areia, Porto Alegre - RS', '-30.027668', '-51.163269'),
(NULL, 'Bourbon Shopping', 'Av. Assis Brasil, 164 - São João, Porto Alegre - RS', '-30.007913', '-51.184273'),
(NULL, 'Praia De Belas Shopping', 'Av. Praia de Belas, 1181 - Praia de Belas, Porto Alegre - RS', '-30.049527', '-51.228753'),
(NULL, 'Barra Shopping Sul', 'Av. Diário de Notícias, 300, Porto Alegre - RS', '-30.084494', '-51.245297'),
(NULL, 'Shopping TOTAL', 'Av. Cristóvão Colombo, 545 - Floresta, Porto Alegre - RS', '-30.025511', '-51.212344')
agora que vem o problema, montar a consulta no access, nao consigo montar:
SELECT id,
(6371 * acos(
cos( radians(-30.053831) )
* cos( radians( lat ) )
* cos( radians( lng ) - radians(-51.191810) )
+ sin( radians(-30.053831) )
* sin( radians( lat ) )
)
) AS distancia
FROM enderecos
HAVING distancia < 25
ORDER BY distancia ASC
LIMIT 4;
alguém pode me dar uma luz de como montar esta consulta por favor, ela deve retornar o seguinte resultado:
id distancia
3 3.5876619973975385
5 3.7180529211314073
1 4.001380483066799
2 5.15708294670291
obrigado
Peguei o exemplo deste site: http://www.phpit.com.br/artigos/como-procurar-locais-proximos-usando-sql.phpit
montei a tabela do exemplo:
CREATE TABLE `enderecos` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`nome` VARCHAR( 60 ) NOT NULL ,
`endereco` VARCHAR( 80 ) NOT NULL ,
`lat` FLOAT( 10, 6 ) NOT NULL ,
`lng` FLOAT( 10, 6 ) NOT NULL
) ;
os dados do exemplo:
INSERT INTO `enderecos` (`id`, `nome`, `endereco`, `lat`, `lng`) VALUES
(NULL, 'Shopping Iguatemi Porto Alegre', 'Av. João Wallig, 1800 - Passo da Areia, Porto Alegre - RS', '-30.027668', '-51.163269'),
(NULL, 'Bourbon Shopping', 'Av. Assis Brasil, 164 - São João, Porto Alegre - RS', '-30.007913', '-51.184273'),
(NULL, 'Praia De Belas Shopping', 'Av. Praia de Belas, 1181 - Praia de Belas, Porto Alegre - RS', '-30.049527', '-51.228753'),
(NULL, 'Barra Shopping Sul', 'Av. Diário de Notícias, 300, Porto Alegre - RS', '-30.084494', '-51.245297'),
(NULL, 'Shopping TOTAL', 'Av. Cristóvão Colombo, 545 - Floresta, Porto Alegre - RS', '-30.025511', '-51.212344')
agora que vem o problema, montar a consulta no access, nao consigo montar:
SELECT id,
(6371 * acos(
cos( radians(-30.053831) )
* cos( radians( lat ) )
* cos( radians( lng ) - radians(-51.191810) )
+ sin( radians(-30.053831) )
* sin( radians( lat ) )
)
) AS distancia
FROM enderecos
HAVING distancia < 25
ORDER BY distancia ASC
LIMIT 4;
alguém pode me dar uma luz de como montar esta consulta por favor, ela deve retornar o seguinte resultado:
id distancia
3 3.5876619973975385
5 3.7180529211314073
1 4.001380483066799
2 5.15708294670291
obrigado