MySQL
Un à plusieurs
Recherche…
Introduction
L'idée de un à plusieurs (1: M) concerne la réunion des lignes les unes avec les autres, en particulier les cas où une seule ligne d'une table correspond à plusieurs lignes d'une autre.
1: M est unidirectionnel, c'est-à-dire que chaque fois que vous interrogez une relation 1: M, vous pouvez utiliser la ligne "one" pour sélectionner "plusieurs" lignes dans une autre table, mais vous ne pouvez pas utiliser une seule ligne "many". sélectionnez plus d'une seule ligne.
Remarques
Pour la plupart des cas, travailler avec une relation 1: M nécessite de comprendre les clés primaires et les clés étrangères .
Une clé primaire est une colonne dans une table où une seule ligne de cette colonne représente une seule entité ou, la sélection d'une valeur dans une colonne de clé primaire entraîne une seule ligne. En utilisant les exemples ci-dessus, un EMP_ID représente un seul employé. Si vous interrogez un seul EMP_ID, vous verrez une seule ligne représentant l'employé correspondant.
Une clé étrangère est une colonne d'une table qui correspond à la clé primaire d'une autre table différente. Dans notre exemple ci-dessus, le MGR_ID de la table EMPLOYEES est une clé étrangère. Généralement, pour joindre deux tables, vous les joindrez en fonction de la clé primaire d'une table et de la clé étrangère dans une autre.
Exemples de tables d'entreprise
Considérez une entreprise où chaque employé qui est un gestionnaire gère un ou plusieurs employés et chaque employé a un seul gestionnaire.
Cela se traduit par deux tables:
DES EMPLOYÉS
EMP_ID | PRÉNOM | NOM DE FAMILLE | MGR_ID |
---|---|---|---|
E01 | Johnny | Appleseed | M02 |
E02 | Erin | Macklemore | M01 |
E03 | Colby | Formalités administratives | M03 |
E04 | Ron | Sonswan | M01 |
GESTIONNAIRES
MGR_ID | PRÉNOM | NOM DE FAMILLE |
---|---|---|
M01 | Bruyant | McQueen |
M02 | Autoritaire | Un pantalon |
M03 | Baril | Jones |
Gérer les employés par un seul responsable
SELECT e.emp_id , e.first_name , e.last_name FROM employees e INNER JOIN managers m ON m.mgr_id = e.mgr_id WHERE m.mgr_id = 'M01' ;
Résulte en:
EMP_ID | PRÉNOM | NOM DE FAMILLE |
---|---|---|
E02 | Erin | Macklemore |
E04 | Ron | Sonswan |
En fin de compte, pour chaque gestionnaire que nous recherchons, nous verrons un ou plusieurs employés retournés.
Obtenir le gestionnaire pour un seul employé
Consultez les exemples de tableaux ci-dessus en regardant cet exemple.
SELECT m.mgr_id , m.first_name , m.last_name FROM managers m INNER JOIN employees e ON e.mgr_id = m.mgr_id WHERE e.emp_id = 'E03' ;
MGR_ID | PRÉNOM | NOM DE FAMILLE |
---|---|---|
M03 | Baril | Jones |
Comme c'est l'inverse de l'exemple ci-dessus, nous savons que pour chaque employé recherché, nous ne verrons qu'un seul responsable.