Formation PUB200 : MySQL, 2018 Jointures

10.3 Spécifier les champs à conserver lors d'une jointure


Lorsqu'on fait une requête SELECT, on voit souvent l'utilisation de « SELECT * » pour obtenir tous les champs ou encore « SELECT champ1, champ2, champ3 » pour n'obtenir que les champs spécifiés.

Ceci est encore vrai lorsque la requête comporte une jointure. Cependant, avec SELECT *, on risque d'avoir des problèmes à différents niveaux :

  • La liste des champs sera très longue et certains champs sembleront dédoublés (ex : la clé primaire d'une table et la clé étrangère de l'autre table auront nécessairement la même valeur donc inutile d'avoir les deux.
  • Si les deux tables contiennent un champ dont le nom est identique (ex : id, description), le nom de la colonne sera ambigü.

Dans le cas où nous avons besoin de tous les champs d'une des deux table (par exemple lorsque la seconde table est utile seulement pour le WHERE), il est possible d'utiliser une syntaxe du style « SELECT matable.* ».

Ex :

MySQL

SELECT voitures.*

FROM voitures

INNER JOIN modeles

ON modele_id=modeles.id

WHERE modeles.nom='Civic';

L'utilisation de cette syntaxe sera généralement réservée aux requêtes faites lors de tests, par exemple dans phpMyAdmin. Dans un programme, on devra plutôt lister les champs désirés pour ne pas avoir plus de champs que nécessaire.

▼Publicité

Veuillez noter que le contenu de cette fiche vous est partagé à titre gracieux, au meilleur de mes connaissances et sans aucune garantie.
Merci de partager !
Soumettre