Една поръчка винаги ще има клиент, нали? Така че това не е ляво, а вътрешно присъединяване.
Това, което ги свързва, е customer_id. Така че вашият SQL е просто:
select o.order_number, o.customer_ID, o.address,
c.first_name, c.last_name
from orders o
inner join customer c on o.customer_ID = c.customer_ID;
Връзка на обект:
Поръчайте CustomerCustomer_Id 0...N>---+ 1 Customer_Id... ...
Тази EF релация е от примерната база данни на MS SQL Server Northwind. В тази примерна база данни, точно като вашата, има клиенти и поръчки. Таблиците Клиенти и Поръчки са свързани чрез полетата CustomerId в двете таблици (това е първичният ключ в Customers и външният ключ в таблицата Orders). Когато моделирате това като релация на обект, имате горната диаграма. Обектът на клиента има свойство за навигация „Поръчки“ (чрез customerId), което сочи към конкретни поръчки на клиента. И обектът за поръчка има свойство за навигация, което сочи към своя клиент (отново чрез CustomerId). Връзката е 1 към 0 или много (1 - *), което означава, че Клиентът може да има 0 или повече Поръчки.
Когато правите присъединяването от страната на клиента, използвате ЛЯВО присъединяване "ако искате да видите всички клиенти, независимо дали имат поръчка(и) или не" - 0 или повече поръчки(и). Ако искате да видите само тези с поръчка(и), тогава използвате вътрешно присъединяване.
Когато правите присъединяването от страната на поръчките, тогава поръчката трябва да има клиент, така че да не може да бъде ЛЯВО присъединяване. Това е ВЪТРЕШНО присъединяване.
Можете да проверите връзката от двете страни, като използвате свързващото поле CustomerId.
Не бихте имали отделна таблица за "OrderId, CustomerId", тъй като това не е релация много към много (това би било чисто излишък и би създало аномалии при нормализиране).
Надявам се сега да е по-ясно.