2014-01-30 6 views
0

Вот это дело, у меня есть SQL запросдекартово произведение присоединиться

SELECT * 
FROM Customers AS C, Orders AS O, Orderlines AS OL 
WHERE C.CustomerID = O.CustomerID AND O .OrderID = OL.OrderID 

который в реляционной алгебре

Σ(C.CustomerID=O.CustomerID AND O.OrderID=OL.OrderID)(Customers x Orders x Orderlines) . 

Как я могу «преобразовать» это 3-полосное декартово произведение в Связать отношения?

Большое спасибо.

P.S Пожалуйста, исправьте меня, если я ошибаюсь в части реляционной алгебры.

+0

Ах, реляционная алгебра. Такие * любимые * воспоминания – Phil

ответ

2

Кажется довольно прямо вперед ...

SELECT c.*, o.*, ol.* 
FROM Customers c 
INNER JOIN Orders o ON c.CustomerId = o.CustomerID 
INNER JOIN OrderLines ol ON o.OrderId = ol.OrderId 

Я бы советовал выбирать * из каждой таблицы, хотя, особенно учитывая дублированные имена столбцов.

1
SELECT * 
FROM Customers AS C 
    JOIN Orders AS O ON C.CustomerID = O.CustomerID 
    JOIN Orderlines AS OL ON O.OrderID = OL.OrderID 
Смежные вопросы