par
Cyrano » 23 oct. 2005, 17:19
Le principe de la jointure est relativement simple: on établit un rapport entre plusieurs tables pour extraire des données cohérentes. Je vais illustrer par un exemple, ce sera plus parlant.
Suppose que j'aie une table membre dans laquelle je stocke nom, prenom, adresse. Mais pour le téléphone, je peux en avoir 0, 1, 2 ou +. Pour simplifier la structure, je vais donc avoir une seconde table telephone dans laquele je stockerai: numéro et type de téléphone (domicile, mobile, fax, bureau, etc...)
Maintenant, je veux tous les numéros d'un membre en particulier. Pour ce faire, je dois pouvoir identifier formellement un numéro comme appartenent à tel membre. J'aurai donc dans la table membre une clé primaire, membre_id, et dans la table téléphone une clé étrangère membre_id qui reprendra la valeur de la clé primaire de membre.
J'aurai donc une requête qui sera du style:
Là, je n'ai pas de jointure, je vais directement sur une seule table.
Maintenant, je veux le nom, le prénom et le numéro de mobile des membres:
Code : Tout sélectionner
SELECT nom, prenom, numero
FROM membre, telephone
WHERE membre.membre_id = telephone.membre_id
AND type_tel = 'mobile'
Là, je vais établir la liste de tous les membres qui ont un numéro de mobile: la jointure est dans la clause WHERE où je compare la clé primaire de la table membre (formulée par le nom du champ préfixé par le nom de la table) et la clé étrangère de la table téléphone (formulée de la même manière que l'autre)
Est-ce que ce schéma te permet de mieux comprendre ce qu'est sommairement ce qu'est une jointure ?
Le principe de la jointure est relativement simple: on établit un rapport entre plusieurs tables pour extraire des données cohérentes. Je vais illustrer par un exemple, ce sera plus parlant.
Suppose que j'aie une table membre dans laquelle je stocke nom, prenom, adresse. Mais pour le téléphone, je peux en avoir 0, 1, 2 ou +. Pour simplifier la structure, je vais donc avoir une seconde table telephone dans laquele je stockerai: numéro et type de téléphone (domicile, mobile, fax, bureau, etc...)
Maintenant, je veux tous les numéros d'un membre en particulier. Pour ce faire, je dois pouvoir identifier formellement un numéro comme appartenent à tel membre. J'aurai donc dans la table membre une clé primaire, membre_id, et dans la table téléphone une clé étrangère membre_id qui reprendra la valeur de la clé primaire de membre.
J'aurai donc une requête qui sera du style:
[code]SELECT numero
FROM telephone
WHERE membre_id = 123[/code]
Là, je n'ai pas de jointure, je vais directement sur une seule table.
Maintenant, je veux le nom, le prénom et le numéro de mobile des membres:
[code]SELECT nom, prenom, numero
FROM membre, telephone
WHERE membre.membre_id = telephone.membre_id
AND type_tel = 'mobile'[/code]
Là, je vais établir la liste de tous les membres qui ont un numéro de mobile: la jointure est dans la clause WHERE où je compare la clé primaire de la table membre (formulée par le nom du champ préfixé par le nom de la table) et la clé étrangère de la table téléphone (formulée de la même manière que l'autre)
Est-ce que ce schéma te permet de mieux comprendre ce qu'est sommairement ce qu'est une jointure ?