URGENT: sql et subqueries

Résolu
pinje Messages postés 129 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 24 août 2006 - 21 oct. 2004 à 11:47
pinje Messages postés 129 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 24 août 2006 - 21 oct. 2004 à 16:52
Bonjour a tous,

mon pb est le suivant: j'ai une table sous access: TBL_XYZ
avec 4 champs, l'Id du points et ces coordonnees X,Y,Z: Id_Pt, X_Coord, Y_Coord, Z_Coord que je manage depuis VB6.

Connaissant les coordonees d'un point XA, YA, je voudrais faire une requete qui me sorte les donnes du point le plus proche, donc qui aurait comme critere Min(Distance entre mon pt A et ceux ds la BD), or apparament il s'agirait d'une subquery, mais comme je ne suis pas expert en SQL, j'ai un peu de mal...

Voila ce que j'ai reussi a pondre, mai qui ne me donne pas ce que je veux:

StrSQL = "SELECT * FROM TBL_XYZ WHERE (SELECT MIN(SQR(((X_Coord - " & XA & " )^2)+((Y_Coord - " & YA & " )^2))) FROM TBL_XYZ)"

Cette requete me sors tous les points de la base, or j'en veux juste un! le plus proche de XA, YA!!!!

Est ce que ma requete est fausse? D'autre idee? ca fait deja plusieurs jours que je suis decu et j'apprecierais vraiment votre aide!

Merci

jerem

8 réponses

cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
21 oct. 2004 à 15:15
J'ai essayé ça dans access, ça a l'air de marcher

SELECT Id_Pt, X_Coord, Y_Coord, Z_Coord
FROM TBL_XYZ AS T1
WHERE ((T1.X_Coord - XA )^2+(T1.Y_Coord - YA )^2) =
(SELECT MIN(((T2.X_Coord - XA )^2+(T2.Y_Coord - YA )^2) )as distance
FROM TBL_XYZ T2
where T2.X_Coord <> XA
and T2.Y_Coord <> YA );

à toi de convertir les XA en & " XA " &...

++
Moustachu
3
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
21 oct. 2004 à 12:13
Je vais jeter un coup d'oeuil mais sais-tu qu'il existe un nouveau site CS sur SQL ? Tu auras peut-être des réponses là bas aussi

++
Moustachu
0
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
21 oct. 2004 à 12:19
Ah ben déjà tu n'as pas de condition where valable je pense. Il faut résussir à joindre les X_Coord et Y_Coord de ta requête et de ta sous requête.

Je continue
++
Moustachu
0
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
21 oct. 2004 à 12:21
Un truc comme ça peut être ?

StrSQL = "
SELECT * FROM TBL_XYZ T1
WHERE exists
(SELECT MIN(SQR(((T2.X_Coord - " & XA & " )^2)+((T2.Y_Coord - " & YA & " )^2)))
FROM TBL_XYZ T2
where T2.X_COORD = T1.X_COORD
AND T2.Y_COORD = T1.Y_COORD
)"

++
Moustachu
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pinje Messages postés 129 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 24 août 2006
21 oct. 2004 à 12:33
Salut moustachu,

je viens d'essayer mais ca a pas l'air de marcher non plus, c'est koi exactement T1 et T2??

Merci,

jerem
0
pinje Messages postés 129 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 24 août 2006
21 oct. 2004 à 12:36
Aussi itu pourrais me filer l'URL de ce site CS pr SQL, car je le trouve pas dans les liens de VBFrance....

Merci,

Jerem
0
cs_moustachu Messages postés 1079 Date d'inscription jeudi 14 novembre 2002 Statut Membre Dernière intervention 1 janvier 2012
21 oct. 2004 à 12:38
T1 et T2 sont des alias de la table. Cela permet de savoir sur quelle "instance" de la table tu travailles.

++
Moustachu
0
pinje Messages postés 129 Date d'inscription vendredi 25 juillet 2003 Statut Membre Dernière intervention 24 août 2006
21 oct. 2004 à 16:52
Merci, ca marche carement!!

Jerem
0
Rejoignez-nous