Zoeken…


Invoering

Het idee van één op veel (1: M) betreft het samenvoegen van rijen met elkaar, in het bijzonder gevallen waarin een enkele rij in een tabel overeenkomt met veel rijen in een andere.

1: M is eenrichtingsverkeer, dat wil zeggen dat wanneer u een 1: M-relatie opvraagt, u de 'één'-rij kunt gebruiken om' veel 'rijen in een andere tabel te selecteren, maar u kunt geen enkele' veel'-rij gebruiken om selecteer meer dan een enkele rij.

Opmerkingen

Voor de meeste gevallen vereist het werken met een 1: M-relatie dat we primaire sleutels en externe sleutels begrijpen.

Een primaire sleutel is een kolom in een tabel waarbij een enkele rij van die kolom een enkele entiteit vertegenwoordigt, of het selecteren van een waarde in een primaire-sleutelkolom resulteert in precies één rij. Met behulp van de bovenstaande voorbeelden vertegenwoordigt een EMP_ID een enkele werknemer. Als u zoekt naar een enkele EMP_ID, ziet u een enkele rij die de overeenkomstige werknemer vertegenwoordigt.

Een buitenlandse sleutel is een kolom in een tabel die overeenkomt met de primaire sleutel van een andere andere tabel. Uit ons bovenstaande voorbeeld is de MGR_ID in de tabel WERKNEMERS een externe sleutel. Over het algemeen om twee tabellen samen te voegen, voegt u ze samen op basis van de primaire sleutel van de ene tabel en de externe sleutel in een andere.

Voorbeeld bedrijfstabellen

Overweeg een bedrijf waar elke werknemer die een manager is, 1 of meer werknemers beheert en elke werknemer slechts 1 manager heeft.

Dit resulteert in twee tabellen:

WERKNEMERS

emp_id VOORNAAM ACHTERNAAM MGR_ID
E01 Johnny Appleseed M02
E02 Erin Macklemore M01
E03 Colby Papierwerk M03
E04 Ron Sonswan M01

MANAGERS

MGR_ID VOORNAAM ACHTERNAAM
M01 Luid McQueen
M02 Bazig Broek
M03 Vat Jones

Laat de werknemers beheren door een enkele 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' ;

Resulteert in:

emp_id VOORNAAM ACHTERNAAM
E02 Erin Macklemore
E04 Ron Sonswan

Uiteindelijk zien we voor elke manager waarnaar we zoeken 1 of meer werknemers terugkomen.

Download de manager voor een enkele medewerker

Raadpleeg de bovenstaande voorbeeldtabellen bij het bekijken van dit voorbeeld.

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 VOORNAAM ACHTERNAAM
M03 Vat Jones

Omdat dit het omgekeerde is van het bovenstaande voorbeeld, weten we dat we voor elke medewerker waarnaar we vragen slechts één overeenkomstige manager zullen zien.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow