#1 Thu 12 July 2018 16:22
- Olivier Pompier
- Participant occasionnel
- Date d'inscription: 8 Sep 2013
- Messages: 49
Jointure sur adresse
Bonjour à la communauté,
Je bute sur une question dont je n'arrive pas à me dépêtrer,
J'ai d'un côté une table enquête dans laquelle sont renseignées des informations obtenues en porte à porte avec un champ numero de maison, un champ nom de rue, et un champ INSEE de la commune
J'ai de l'autre côté une couche de points avec une table adresse contenant de la même façon le numéro de maison, le nom de rue et l'id de la commune.
Ma question est: comment joindre ces tables avec ces 3 champs afin de visualiser sur la carte les informations du porte à porte. J'ai contourné le problème en concatenant les champs mais cela ne me paraît pas une solution ...
Merci
Hors ligne
#2 Fri 13 July 2018 00:43
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1160
Re: Jointure sur adresse
Salut,
En SQL, on utlise le mot-clef INNER JOIN pour faire
une conjonction de deux tables.
Si les colonnes communes ont
des noms identiques dans les 2 tables :
Code:
SELECT * FROM adresse INNER JOIN enquete USING(insee,nom,numero)
Si les noms diffèrent :
Code:
SELECT * FROM adresse INNER JOIN enquete ON adresse.colonne_1 = enquete.col_1 AND adresse.colonne_2 = enquete.col_2 AND (etc..)
Dernière modification par tumasgiu (Fri 13 July 2018 00:43)
Hors ligne
#3 Fri 13 July 2018 10:40
- Olivier Pompier
- Participant occasionnel
- Date d'inscription: 8 Sep 2013
- Messages: 49
Re: Jointure sur adresse
Super, je ne savais pas qu'on pouvait ajouter AND à une jointure
Merci bcp
Hors ligne
#4 Sat 28 July 2018 12:07
- Mathieu Denat
- Participant actif
- Lieu: Montpellier
- Date d'inscription: 5 May 2010
- Messages: 110
Re: Jointure sur adresse
Bonjour,
Je profite de ce post pour une petite question d'usage.
Je n'utilise jamais le mot clé INNER (ni OUTER), puisque JOIN exécute par défaut INNER JOIN.
Je travaille avec PostgreSQL 9.6 (je sais il faut que je me mette à jour!)
Est ce une bonne pratique?
Mathieu
C'est en forgeant qu'on devient forgeron
Hors ligne
#5 Sat 28 July 2018 13:26
- tumasgiu
- Membre
- Lieu: Ajaccio
- Date d'inscription: 5 Jul 2010
- Messages: 1160
Re: Jointure sur adresse
Je ne sais pas si le fait de les ommetre soit considéré comme une
bonne ou mauvaise pratique.
Ne pas les écrire peut nuire à la portabilité de vos requêtes,
au cas ou vous migreriez sur un SGBDR imposant ces clauses,
mais je crois bien que dans la norme SQL elle même, INNER et OUTER sont optionnels.
Il est possible qu'un SGBDR ne respecte intégralement la norme, mais à ma connaissance
à part Access, qui est très contraignant sur les joiintures, du moins jusqu'à la version 2007,
tout les systèmes autorisent l'omission.
Après on peut discuter de l'intérêt d'écrire du code SQL portable.
Ecrire les formes courtes des jointures est univoque, c'est à dire, qu'un JOIN sera toujours INNER
et qu'un LEFT/RIGHT/FULL JOIN sera toujours OUTER, donc pas de risque de se tromper et de faire
une chose à la place d'une autre.
Certaines personnes trouvent les formes longues plus lisibles.
Personnellement je trouve que ça apporte plus du bruit qu'autre chose, et c'est surtout plus long à taper.
Cà n'aide pas non plus les néophytes à la compréhension, puisque les termes INNER et OUTER sont
je trouve très peu parlants, et une recherche de la définition s'impose presque toujours, que le mot clef soit présent ou pas.
CONJONCTION et DISJONCTION auraient été plus appropriés.
Ce qui est par contre peut être une mauvaise pratique, ou tout du moins beaucoup moins lisible,
c'est la forme de jointure suivante :
Code:
SELECT * FROM t1, t2 WHERE t1.id = t2.id;
Le prédicat de jointure se trouve mêlé à ceux de la clause WHERE, et c'est beaucoup moins clair,
surtout quand plus de deux relations sont concernées et que la clause WHERE comporte plusieurs conditions.
Il me semble que cela peut d'ailleurs avoir un impact sur le plan de la requête sur PostgreSQL.
Je n'utilise jamais cette syntaxe, même pour un CROSS JOIN.
Donc pour répondre à votre question, je vous conseillerais de faire comme vous voulez mais de rester consistant en vous tenant
à une ou l'autre des formes.
Dernière modification par tumasgiu (Sat 28 July 2018 13:33)
Hors ligne
#6 Mon 30 July 2018 15:27
- Mathieu Denat
- Participant actif
- Lieu: Montpellier
- Date d'inscription: 5 May 2010
- Messages: 110
Re: Jointure sur adresse
Merci beaucoup pour cette réponse qui m'éclaire!
Mathieu
C'est en forgeant qu'on devient forgeron
Hors ligne