Ricerca…


introduzione

L'idea di uno a molti (1: M) riguarda l'unione di righe tra di loro, in particolare i casi in cui una singola riga in una tabella corrisponde a più righe in un'altra.

1: M è unidirezionale, ovvero ogni volta che si esegue una query su una relazione 1: M, è possibile utilizzare la riga 'uno' per selezionare 'molte' righe in un'altra tabella, ma non è possibile utilizzare una singola riga 'molte' per seleziona più di una singola riga "uno".

Osservazioni

Per la maggior parte dei casi, lavorare con una relazione 1: M richiede che comprendiamo le chiavi primarie e le chiavi esterne .

Una chiave primaria è una colonna in una tabella in cui qualsiasi singola riga di quella colonna rappresenta una singola entità oppure, selezionando un valore in una colonna chiave primaria, si ottiene esattamente una riga. Utilizzando gli esempi precedenti, un EMP_ID rappresenta un singolo dipendente. Se esegui una query per ogni singolo EMP_ID, vedrai una singola riga che rappresenta il dipendente corrispondente.

Una chiave esterna è una colonna in una tabella che corrisponde alla chiave primaria di un'altra tabella diversa. Dal nostro esempio precedente, MGR_ID nella tabella EMPLOYEES è una chiave esterna. Generalmente per unire due tabelle, ti unirai a loro in base alla chiave primaria di una tabella e alla chiave esterna in un'altra.

Esempio di tabelle aziendali

Considera un'azienda in cui ogni dipendente che è un manager, gestisce uno o più dipendenti e ogni dipendente ha solo un manager.

Ciò si traduce in due tabelle:

DIPENDENTI

EMP_ID NOME DI BATTESIMO COGNOME MGR_ID
E01 Johnny Appleseed M02
E02 Erin Macklemore M01
E03 Colby lavoro d'ufficio M03
E04 Ron Sonswan M01

DIRIGENTI

MGR_ID NOME DI BATTESIMO COGNOME
M01 Forte McQueen
M02 Prepotente Pantaloni
M03 barile Jones

Ottieni i dipendenti gestiti da un singolo manager

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

Risultati in:

EMP_ID NOME DI BATTESIMO COGNOME
E02 Erin Macklemore
E04 Ron Sonswan

In definitiva, per ogni manager su cui eseguiamo la query, vedremo restituire 1 o più dipendenti.

Ottieni il manager per un singolo dipendente

Consulta le tabelle di esempio sopra quando guardi questo esempio.

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 NOME DI BATTESIMO COGNOME
M03 barile Jones

Poiché questo è l'inverso dell'esempio sopra riportato, sappiamo che per ogni dipendente per il quale richiediamo, vedremo sempre un manager corrispondente.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow