加入(?),分组和两个模式

时间:2017-08-08 11:00:22

标签: sql oracle

我有这个查询,工作正常:

select
    order_details.productid,
    count(*)
from order_details
left join orders
    on order_details.orderid = orders.orderid
group by order_details.productid;

事情是,我真的不想得到" productid"但" productname"。

"产品名"是在一个不同的架构:adm。

那么我怎样才能得到这样的结果?

 PRODUCTNAME   COUNT(*)
---------- ----------
      table          5
       desk          7
       lamp          4

3 个答案:

答案 0 :(得分:0)

您需要另一个join。但是,您需要知道包含产品名称和要加入的列的表。

类似的东西:

select p.productname, count(*)
from order_details od join
     adm.products p                  -- guessing at the name
     on od.productid = p.productid   -- and the column for joining
group by p.productname;

我猜你在查询中根本不需要orders表。如果您的数据库设置正确,所有订单详细信息应该只是一个订单的一部分。

答案 1 :(得分:0)

“其他架构”是指另一个表还是另一个架构?如果它是另一个模式,如果两个模式位于不同的数据库中,或者如果在同一个数据库中只有一个允许您从两个模式中进行选择的授权,则只需要一个DB链接。

在不知道更多细节的情况下,您似乎想要这样做:

SELECT adm.some_product_table.productname, count(*) 
FROM order_details LEFT JOIN orders on order_details.orderid = orders.orderid
LEFT JOIN adm.some_product_table on adm.some_product_table.productid = order_details.productid
GROUP BY order_details.productid;

答案 2 :(得分:0)

connect adm/pwd1;
grant select on products to this_schema;
connect this_schema/pwd2;
select p.productname, count(*) 
  from order_details d,orders o, adm.products p
 where d.orderid = o.orderid 
   and d.productid = p.productid
 group by p.productname;