Re: [LA-discussions] mysql |
[ Thread Index |
Date Index
| More linuxarverne.org/discussions Archives
]
Pascal à la Poste wrote:
Salut tout le monde.
J'ai deux tables dans ma base de données Joomla. La première s'appelle
jos_users et elle contient les id et les pseudos des users. La
deuxième s'appelle jos_comprofiler et contient des informations
concernant les users mais les identifie par leur id et ignore leur
pseudo. Dans l'idéal je veux sortir une table qui contienne les
pseudos et les informations contenues dans jos_comprofiler (une
concaténation c'est ça ?). Si quelqu'un me donne la formule j'apprends
le sql sur le site du zéro.
Merci.
---
Liste de discussions de LinuxArverne
http://wiki.linuxarverne.org/listes_de_diffusion
Bonsoir !
Leçon du jour : SQL, les "jointures" :-)
Principe : récupérer des données de plusieurs tables en faisant
correspondre leurs enregistrements selon certains critères.
Dans le cas présent, deux tables dont l'une dispose d'une clé étrangère
(i.e. une colonne qui contient la valeur d'un élément qui sert de clé
dans une autre table), soit jos_users (id, pseudo) et jos_comprofiler
(id, nom, prenom, mail, etc).
La syntaxe est la suivante :
SELECT u.pseudo, c.nom, c.prenom, c.mail, c.etc FROM jos_users u,
jos_comprofiler c WHERE u.id = c.id;
Explication de texte :
- les éléments "u" et "c" sont des "alias" qui permettent de désigner
les tables "jos_users" et "jos_comprofiler" sans avoir à retaper leur
(trop long) nom en entier
- on aurait également pu écrire cette même requête sans ces alias mais
elle aurait triplé de longueur
- dans le cas de tables n'ayant pas de colonnes du même nom on aurait
pu s'en passer (sauf si on aime les choses bien explicites) or ici nous
avons une condition à écrire avec ces deux colonnes "id" donc il a fallu
préfixer les noms des colonnes avec le nom de la table ou en
l'occurrence l'alias de la table
- on attribue un alias à une table dans la clause "FROM" en mettant le
nom de l'alias à la suite du nom de la table, soit tel qu'écrit
ci-dessus, soit en utilisant le mot-clé "AS" : bla bla bla FROM
jos_users AS u, jos_comprofiler AS c bla bla bla.
- assez avec les alias, parlons de la jointure : on joint les deux
tables en mettant des conditions dans la clause "WHERE" de la requête
- cette requête sans clause WHERE nous aurait retourné le produit
cartésien des deux tables, c'est à dire toutes les associations
possibles et imaginables d'un élément de la première table avec un
élément de la seconde table (donc un résultat inintéressant)
- la clause WHERE ci-dessus s'assure que la requête ne nous retourne
que les associations pour lesquelles la condition qui suit le mot-clé
"WHERE" est respectée, c'est à dire uniquement les associations où l'id
de l'enregistrement de u (jos_users) est égal à l'id de l'enregistrement
de c (jos_comprofiler)
Je vais arrêter là parce que je redoute de vous avoir saoulé :-D
Bon courage pour l'apprentissage du SQL !
=^.^=
---
Liste de discussions de LinuxArverne
http://wiki.linuxarverne.org/listes_de_diffusion