#1 Fri 13 June 2008 10:00
- greg-gwened
- Participant actif
- Lieu: Vannes
- Date d'inscription: 4 Oct 2007
- Messages: 148
[SQL - ACCESS] Pithagore et fonction SQRT
Bonjour,
Je souhaite utiliser le theoreme de pithagore pour calculer la distance entre deux point.
J'ai donc obtenu a partir des coordonnées des points, les mesures des cotés adjacent et opposés (respectivement LX et LY)
Voici mon calcul de l'hypothenus en sql mais cela ne fonctionne pasen sql sous access mais cela ne fonctionne pas:
UPDATE COORD_TEMP SET DISTANCE_AS=SQRT((POWER(LX,2))+(POWER(LY,2)));
Quelqu'un peut-il m'aider?
greg-gwened
Chambre d'agriculture 44
Hors ligne
#2 Fri 13 June 2008 11:08
- DCRAY
- Juste Inscrit !
- Lieu: Nice, France
- Date d'inscription: 23 Dec 2005
- Messages: 8
Re: [SQL - ACCESS] Pithagore et fonction SQRT
Salut,
Allez ici : http://www.bodley.ox.ac.uk/guides/maps/miht_14.htm
La description est en anglais, mais il montre comment on peut faire le calcul de distance entre un point central et des autres autour.
Duncan RAY
Hors ligne
#3 Fri 13 June 2008 11:15
- greg-gwened
- Participant actif
- Lieu: Vannes
- Date d'inscription: 4 Oct 2007
- Messages: 148
Re: [SQL - ACCESS] Pithagore et fonction SQRT
Merci pour ta réponse DCRAY mais en fait je ne dispose pas de SIG sur mon poste.
Le poste avec une licence SIG est occupé pour la journée et j'ai absolument besoin de ces valeurs pour continuer mon analyse.
C'est pourquoi je cherche à calculer cette distance à partir des coordonnées sous access.
Quelqu'un aurait-il une autre solution?
Hors ligne
#4 Fri 13 June 2008 11:30
- DCRAY
- Juste Inscrit !
- Lieu: Nice, France
- Date d'inscription: 23 Dec 2005
- Messages: 8
Re: [SQL - ACCESS] Pithagore et fonction SQRT
Salut,
Si vous utilisez ACCESS dans la lange FRANCAIS, et que vous n'envoyez pas le code sql vers SQL SERVER ou ORACLE, mais vous restez DANS ACCESS, vous devez utiliser les termes francaises :
Essayes quelques choses comme celui-ce :
SELECT Sqr(([ETB_X]*2)+([ETB_Y]*2)) AS DISTANCE_AS
FROM COORD_TEMP;
Si ça marche, vous changez le code vers UPDATE :
UPDATE COORD_TEMP SET COORD_TEMP.DISTANCE_AS = Sqr(([LX]*2)+([LY]*2));
Duncan
Hors ligne
#5 Fri 13 June 2008 11:36
- DCRAY
- Juste Inscrit !
- Lieu: Nice, France
- Date d'inscription: 23 Dec 2005
- Messages: 8
Re: [SQL - ACCESS] Pithagore et fonction SQRT
Désolé, j'ai fait un erreur dans le select, remplace le ETB_x et ETB_Y avec vos champs LX et LY
Hors ligne
#6 Fri 13 June 2008 11:43
- DCRAY
- Juste Inscrit !
- Lieu: Nice, France
- Date d'inscription: 23 Dec 2005
- Messages: 8
Re: [SQL - ACCESS] Pithagore et fonction SQRT
Donc, je reprend :
Mais ç'est la distance de QUOI vous avez besoin d'inclus votre point d'origine dans le calcul, comme on montre dans le lien en premier ligne.
SELECT Sqr(([LX]*2)+([LY]*2)) - <<votre point d'origine>> AS DISTANCE_AS
FROM COORD_TEMP;
Hors ligne
#7 Fri 13 June 2008 12:08
- greg-gwened
- Participant actif
- Lieu: Vannes
- Date d'inscription: 4 Oct 2007
- Messages: 148
Re: [SQL - ACCESS] Pithagore et fonction SQRT
En fait je cherche a calculer la distance entre deux points A et S (DISTANCE_AS)
A(XA,YA) et S(XS,YS)
D'apres pythagore: (DISTANCE_AS)²= (LX)² + (LY)²
ou LX = |XS - XA| [ABS(XS - XA) en SQL]
et LY = |YS - YA| [ABS(YS -YA) en SQL]
J'espere que je m'explique clairement.
J'essaye de suite ce que tu me conseille ci-dessus et je te tiens au courant.
Merci Duncan
Hors ligne
#8 Fri 13 June 2008 12:22
- DCRAY
- Juste Inscrit !
- Lieu: Nice, France
- Date d'inscription: 23 Dec 2005
- Messages: 8
Re: [SQL - ACCESS] Pithagore et fonction SQRT
Pas de quoi.
ok, ça doit marcher comme vous voulez.
J'ai pas compris que vous avez déjà calculé les "deltas". Donc, si vous respectez les fonctions dans les applications, vous ne deviez plus avoir un problème.
Le langage ACCESS SQL, dans quelques cas, est beaucoup différents que T-SQL de SQL SERVER, ou même P-SQL/SQL d'ORACLE; Microsoft créer même son propre langage entre les applications Microsoft.
De 90% à 95% des fonctions et de fonctionalité et le même, mais c'est quand vous arrivez à faire quelques choses simple ou les problèmes font surfaces.
Duncan
Hors ligne
#9 Fri 13 June 2008 12:27
- greg-gwened
- Participant actif
- Lieu: Vannes
- Date d'inscription: 4 Oct 2007
- Messages: 148
Re: [SQL - ACCESS] Pithagore et fonction SQRT
J'ai essayé mais *2 ne permet pas d'élever la valeur à la puissance 2 car il s'agit d'une multiplication.
Cependant j'ai pu procédé ainsi et cela fonctionne:
SELECT ID_ACTEUR, Sqr(([LX]*[LX])+([LY]*[LY])) AS DISTANCE_AS
FROM COORD_TEMP;
Encore merci Duncan et bonne continuation...
@+
Gregory
Hors ligne
#10 Fri 13 June 2008 12:31
- greg-gwened
- Participant actif
- Lieu: Vannes
- Date d'inscription: 4 Oct 2007
- Messages: 148
Re: [SQL - ACCESS] Pithagore et fonction SQRT
Pour en revenir au SQL d'access
le pire est que la fonction SQRT figure dans l'aide ACCESS alors qu'elle ne fonctionne pas!!!
Microsoft pourrait revoir sa copie!!!!
Hors ligne
#11 Fri 13 June 2008 12:56
- DCRAY
- Juste Inscrit !
- Lieu: Nice, France
- Date d'inscription: 23 Dec 2005
- Messages: 8
Re: [SQL - ACCESS] Pithagore et fonction SQRT
Oui c'est vrai. Mais c'est dans la rubrique "Fonctions scalaires ODBC". J'ai un serveur SQL SERVER. Si j'envoie le code avec SQR() il échoue.
ACCESS SQL :
SELECT Sqr(([LX]*[LX])+([LY]*[LY])) AS DISTANCE_as
FROM COORD_TEMP;
SQL SERVER T-SQL :
SELECT Sqrt(([LX]*[LX])+([LY]*[LY])) AS DISTANCE_as
FROM COORD_TEMP;
Si j'utilse SQRT dans ACCESS ça ne marche pas. Mais si je crée une requête SQL DIRECT, ça marche parce que la demande est envoyé à SQL SERVER qui connaît SQRT.
Si j'utilise SQR dans une requête direct vers SQL SERVER ça échoue parce que SQL SERVER ne connaît pas SQR, mais ça marche dans ACCESS, parce qu'ACCESS connaît SQR.
C'est assez pour rendre les gens complètement fou !! Et ne me parle pas des pauvres gens qui je dois dépanner.
:-) bon courage et bonne continuation Greg-gwened de Vannes.
Hors ligne
#12 Fri 13 June 2008 14:50
- DCRAY
- Juste Inscrit !
- Lieu: Nice, France
- Date d'inscription: 23 Dec 2005
- Messages: 8
Re: [SQL - ACCESS] Pithagore et fonction SQRT
désole, en lisant mon message, il peut être mal interpreter.
Les pauvres gens que je dois dépanner sont les pauvres gens au bureau où je travail :-)
Hors ligne