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


Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/