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 14/12/2016 20:57:03

Nitsuja
Membre

Question débutant

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

Hors ligne

#2 14/12/2016 21:35:43

Nitsuja
Membre

Re : Question débutant

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 ?

Hors ligne

#3 16/12/2016 19:22:53

gleu
Administrateur

Re : Question débutant

Optimal par rapport à quoi ?

Hors ligne

Pied de page des forums