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.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow