Suche…


Einführung

Die Idee von eins zu vielen (1: M) bezieht sich auf das Verbinden von Zeilen miteinander, insbesondere in Fällen, in denen eine einzelne Zeile in einer Tabelle vielen Zeilen in einer anderen entspricht.

1: M ist einseitig, das heißt, wenn Sie eine 1: M-Beziehung abfragen, können Sie die Zeile 'eine' verwenden, um 'viele' Zeilen in einer anderen Tabelle auszuwählen, aber Sie können keine einzelne 'viele' Zeile verwenden Wählen Sie mehr als eine einzelne Zeile aus.

Bemerkungen

Wenn Sie mit einer 1: M-Beziehung arbeiten, müssen Sie in den meisten Fällen Primärschlüssel und Fremdschlüssel verstehen.

Ein Primärschlüssel ist eine Spalte in einer Tabelle, in der eine einzelne Zeile dieser Spalte eine einzelne Entität darstellt. Wenn Sie einen Wert in einer Primärschlüsselspalte auswählen, wird genau eine Zeile angezeigt. In den obigen Beispielen steht eine EMP_ID für einen einzelnen Mitarbeiter. Wenn Sie nach einer einzelnen EMP_ID abfragen, wird eine einzelne Zeile angezeigt, die den entsprechenden Mitarbeiter darstellt.

Ein Fremdschlüssel ist eine Spalte in einer Tabelle, die dem Primärschlüssel einer anderen Tabelle entspricht. In unserem obigen Beispiel ist die MGR_ID in der Tabelle EMPLOYEES ein Fremdschlüssel. Um zwei Tabellen zu verknüpfen, werden Sie im Allgemeinen auf der Grundlage des Primärschlüssels einer Tabelle und des Fremdschlüssels in einer anderen Tabelle zusammengefügt.

Beispiel Firmentabellen

Stellen Sie sich ein Unternehmen vor, in dem jeder Mitarbeiter, der Manager ist, einen oder mehrere Mitarbeiter verwaltet, und jeder Mitarbeiter nur einen Manager hat.

Daraus ergeben sich zwei Tabellen:

ANGESTELLTE

EMP_ID VORNAME NACHNAME MGR_ID
E01 Johnny Appleseed M02
E02 Erin Macklemore M01
E03 Colby Papierkram M03
E04 Ron Sonswan M01

MANAGER

MGR_ID VORNAME NACHNAME
M01 Laut McQueen
M02 Herrisch Hose
M03 Fass Jones

Erhalten Sie die Mitarbeiter, die von einem einzelnen Manager verwaltet werden

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' ;

Ergebnisse in:

EMP_ID VORNAME NACHNAME
E02 Erin Macklemore
E04 Ron Sonswan

Letztendlich wird für jeden Manager, nach dem wir fragen, ein oder mehrere Mitarbeiter zurückgeschickt.

Holen Sie sich den Manager für einen einzelnen Mitarbeiter

Beachten Sie die obigen Beispieltabellen, wenn Sie dieses Beispiel betrachten.

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 VORNAME NACHNAME
M03 Fass Jones

Da dies das umgekehrte Beispiel ist, wissen wir, dass wir für jeden Mitarbeiter, den wir abfragen, immer nur einen entsprechenden Manager sehen werden.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow