Szukaj…


Wprowadzenie

Idea jednego do wielu (1: M) dotyczy łączenia rzędów ze sobą, w szczególności przypadków, w których jeden wiersz w jednej tabeli odpowiada wielu wierszom w innym.

1: M jest jednokierunkowy, to znaczy za każdym razem, gdy zapytanie o relację 1: M, możesz użyć wiersza „jeden”, aby wybrać „wiele” wierszy w innej tabeli, ale nie możesz użyć pojedynczego wiersza „wiele”, aby wybierz więcej niż jeden „jeden” wiersz.

Uwagi

W większości przypadków praca z relacją 1: M wymaga od nas zrozumienia kluczy podstawowych i kluczy obcych .

Klucz podstawowy to kolumna w tabeli, w której dowolny pojedynczy wiersz tej kolumny reprezentuje pojedynczy byt, lub wybranie wartości w kolumnie klucza podstawowego daje dokładnie jeden wiersz. Korzystając z powyższych przykładów, identyfikator EMP_ID reprezentuje jednego pracownika. Jeśli zapytasz o dowolny identyfikator EMP_ID, zobaczysz pojedynczy wiersz reprezentujący odpowiedniego pracownika.

Klucz obcy to kolumna w tabeli, która odpowiada kluczowi głównemu innej innej tabeli. Z naszego powyższego przykładu MGR_ID w tabeli EMPLOYEES jest kluczem obcym. Zasadniczo, aby połączyć dwie tabele, dołączysz do nich na podstawie klucza podstawowego jednej tabeli i klucza obcego w drugiej.

Przykładowe tabele firm

Rozważmy firmę, w której każdy pracownik, który jest menedżerem, zarządza co najmniej 1 pracownikiem, a każdy pracownik ma tylko 1 menedżera.

Daje to dwie tabele:

PRACOWNIKÓW

EMP_ID IMIĘ NAZWISKO MGR_ID
E01 Jasio Nasiona Jabłka M02
E02 Erin Macklemore M01
E03 Colby Papierkowa robota M03
E04 Ron Sonswan M01

MENEDŻEROWIE

MGR_ID IMIĘ NAZWISKO
M01 Głośny McQueen
M02 Apodyktyczny Spodnie
M03 Beczka Jones

Uzyskaj pracowników zarządzanych przez jednego menedżera

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

Prowadzi do:

EMP_ID IMIĘ NAZWISKO
E02 Erin Macklemore
E04 Ron Sonswan

Ostatecznie, za każdego kierownika, o którego pytamy, zobaczymy 1 lub więcej pracowników zwróconych.

Zdobądź menedżera dla jednego pracownika

Spójrz na powyższe przykładowe tabele, patrząc na ten przykład.

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 IMIĘ NAZWISKO
M03 Beczka Jones

Ponieważ jest to odwrotność powyższego przykładu, wiemy, że dla każdego pracownika, którego szukamy, zobaczymy tylko jednego odpowiedniego kierownika.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow