PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Re : Général » Question débutant » 14/12/2016 21:35:43

La requête était pas très bien formée, je l'avais pris un peu au hasard sur le net.

J'ai réussi à la faire tourner avec:

SELECT *, 
(6371 * acos( cos( radians(46.38) ) * cos( radians( latitude) ) * cos( radians( longitude) - radians(4.916) ) + 
sin( radians(46.38) ) * 
sin( radians( latitude) ) ) ) 
AS distance
FROM cities
WHERE ( 3959 * acos( cos( radians(46.38) ) * 
cos( radians( latitude) ) * 
cos( radians( longitude) - 
radians(4.916) ) + 
sin( radians(46.38) ) * 
sin( radians( latitude) ) ) ) < 40
ORDER BY distance LIMIT 10;

Est-ce optimal ?

#2 Général » Question débutant » 14/12/2016 20:57:03

Nitsuja
Réponses : 2

Bonjour,

Je suis début en PostgreSQL et j'arrive à trouver une solution sur le net.
Je voudrais exécuter la requête suivante:

SELECT id, ( 6371 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( long ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance
FROM cities
WHERE id = 1
HAVING distance < 25
ORDER BY distance LIMIT 20;

Cependant, l'alias "distance" ne semble pas reconnu et j'obtiens l'erreur suivante:

ERROR: column "distance" does not exist
État SQL :42703
Caractère : 264

Merci d'avance pour votre aide smile

Pied de page des forums

Propulsé par FluxBB