Внутреннее объединение 4 столов - PullRequest
0 голосов
/ 11 октября 2019

Таблицы

Производство

enter image description here

Категория

enter image description here

Заказы

enter image description here

OrderDetails

enter image description here

Я сделал SalesView следующим образом

create view salesView as select o.oID, p.name as product, od.sell_price as price, od.qty as quantity, o.order_date
    from orderDetails od inner join
    orders o on o.oID = od.oID,
    production p where = p.ID = od.pID;

Как od (экземпляр Table OrderDetails) не содержит ссылкув таблицу категорий. Как добавить столбец «Категория» в SalesView?

Теперь

select * from SalesView;

enter image description here

Я хочу добавить «Категория»столбец в нем.

Я пробовал ...

create view salesView as select o.oID, p.name as product, c.name as category, od.sell_price as price, od.qty as quantity, o.order_date
    from orderDetails od inner join
    orders o on o.oID = od.oID,
    production p where = p.ID = od.pID,
    category c where c.ID = ???

1 Ответ

2 голосов
/ 11 октября 2019

Не смешивайте обозначения / стандарты. Чтобы добавить категорию, просто подключите категорию к производственной таблице. Это предполагает, что у всех производств будет категория;в противном случае вы можете захотеть присоединиться слева (наружу).

create view salesView as 
SELECT o.oID
     , p.name as product
     , c.name as category
     , od.sell_price as price
     , od.qty as quantity
     , o.order_date
     , c.name
FROM orderDetails od 
INNER JOIN orders o 
   on o.oID = od.oID
INNER JOIN Production p 
   on p.ID = od.pID
INNER JOIN Category c
   on c.ID = P.catID
WHERE...

Не делайте этого:

create view salesView as select o.oID, p.name as product, od.sell_price as price, od.qty as quantity, o.order_date
    from orderDetails od inner join --<See the inner join
    orders o on o.oID = od.oID, --<See the ,  (don't mix standards!)
    production p where = p.ID = od.pID;

Обратите внимание на разницу в стандартах: https://gerardnico.com/data/type/relation/sql/join_default_ansi92_comparison

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...