как написать эту точку зрения - PullRequest
1 голос
/ 27 декабря 2011

у меня есть 2 стола

клиент

customerid    
customername

Заказы

customerid
orderid
isopen [true/false]

Как мне создать представление, которое будет содержать следующее:

имя клиента, общее количество заказов, общее количество заказов в столбце isopen == true

* Обновление **

create view CustomerOrders as
select c.id CustomerID, 
       max(c.customername) CustomerName,
       count(o.order_id) CustomerOrders,
       SUM(CASE WHEN o.isopen = 1 THEN 1 ELSE 0 END) AS OpenOrders
from customer c
left join orders o on c.id = o.customerid
group by c.id

Спасибо всем отметьте, пожалуйста, исправьте свой ответ, чтобы я мог отметить вас

Ответы [ 5 ]

2 голосов
/ 27 декабря 2011

Попробуйте с:

CREATE VIEW v1 AS 
  SELECT customername, count(orderid) as total_orders 
   FROM customer c
   LEFT JOIN orders o ON ( c.id = o.customerid AND o.isopen = TRUE)
  GROUP BY c.id
1 голос
/ 27 декабря 2011

Попробуйте:

create view CustomerOrders as
select c.customerid CustomerID, 
       max(c.customername) CustomerName,
       count(o.order_id) CustomerOrders,
       SUM(CASE WHEN o.isopen = 1 THEN 1 ELSE 0 END) OpenOrders
from customer c
left join orders o on c.customerid = o.customerid
group by c.id

(Предполагается, что вы хотите включить клиентов без заказов - измените левое соединение на внутреннее, если хотите включить только клиентов с заказами.)

1 голос
/ 27 декабря 2011

Попробуйте ниже приведенный синтаксис

 Create View OpenOrders AS
       SELECT CUSTOMERNAME, count(ORDERID) FROM CUSTOMER INNER JOIN ORDERS
                CUSTOMER.CUSTOMERID = ORDERS.CUSTOMERID
       WHERE ORDERS.ISOPEN =1;
0 голосов
/ 27 декабря 2011

Это будет примерно так, в зависимости от специфики определений таблиц (которые вы не представите):

create view viewname as
 select c.customername, count(o.*) as totalorders
  from customer c, orders o
   where c.customerid = o.customerid and o.isopen
0 голосов
/ 27 декабря 2011

вы не можете сделать это, пока у вас нет атрибута customerid вместе с именем клиента.иначе они не будут ссылаться

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