|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Invité régulier
![]() Inscription : juin 2006 Messages : 16 ![]() |
bonjour à tous,
j'ai 3 tables: une table stages avec un champs id_lieu une table lieux avec un champs id et un champs cp (code postal) une table villes avec un champs c_p (code postal) et deux champs lat et lon (latitude et longitude) si je veux afficher les stages ayant lieu dans le 92220: Code :
SELECT * FROM stages WHERE id_lieu IN (SELECT id FROM lieux WHERE cp = '92220') J'utilise cette requête pour connaitre les 10 villes les plus proches: Code :
ce qui serait la requête suivante: Code :
Toute aide sera la bienvenue Merci d'avance |
||||
|
|
00
|
|
|
#2 |
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 638 ![]() |
Bonjour,
Mettez-vous aux jointures et votre problème sera résolu assez rapidement je pense. http://sqlpro.developpez.com/cours/sqlaz/jointures/ Dans le cas où un stage peut être dans plusieurs lieux différent le problème sera un peu plus corsé, et là il faudra connaitre votre sgbd pour trouver une solution appropriée. |
|
|
00
|
|
|
#3 | |||||
![]() ![]() |
La structure de ta BDD me semble bancale !
Sais-tu qu'une ville peut avoir plusieurs codes postaux et qu'un code postal peut concerner plusieurs villes ? En plus, un code postal n'est pas une bonne clé. À moins que ta table des villes soit en fait une table des codes postaux et que les coordonnées géographiques soient celles du barycentre du secteur couvert par le code postal ? Connais-tu les jointures ? Ta première requête peut s'écrire ainsi, en évitant la guerre des étoiles Code :
Code :
Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||||
|
00
|
|
|
#4 | ||
|
Invité régulier
![]() Inscription : juin 2006 Messages : 16 ![]() |
En fait je n'utilise pas le code postal mais le code insee des communes.
merci pour la première requête modifiée. pour la seconde elle fonctionne, j'ai fait une erreur de copie: Code :
|
||
|
|
00
|
|
|
#5 | |||
![]() ![]() |
Citation:
Même si ça reste une mauvaise clé ! ![]() Dans quelles villes se situent les stages ? Comme tu n'as toujours pas donné la structure complète des tables, je suis obligé d'imaginer un peu ! ![]() Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : juin 2006 Messages : 16 ![]() |
Merci CinePhil,
tu as bien compris la structure de mes table et j'ai bien compris la requête que tu me propose, c'est parfait. Par contre je parviens pas à bidouiller pour intégrer ma requête de calcul de distance. Si tu peux me donner une piste, j'ai le cerveau qui fume là... Merci à toi |
|
|
00
|
|
|
#7 | ||
![]() ![]() |
Quel est ton besoin exactement ?
À partir de coordonnées géographiques, connaître les 10 stages les plus proches ? Si les variables $LAT et $LONG sont les coordonnées de l'endroit considéré, il te suffit je pense de faire cette requête : Code :
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : juin 2006 Messages : 16 ![]() |
j'ai modifié toutes mes requêtes en utilisant les jointures, et cela marche parfaitement. On voit en effet les choses 'différemment' en utilisant cette technique.
Merci encore à toi, et bon week end! |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com