2017-08-08 8 views
0

私は正常に動作し、このクエリを持っているが(?):参加、グループによると、2つのスキーマ

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

事は、私が本当に「商品コード」が、「PRODUCTNAME」を取得する必要はありませんです。

"productname"は異なるスキーマにあります:adm。

どうすればこのような結果が得られますか?

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

答えて

0

"他のスキーマ"とは、別のテーブルまたは別のスキーマを意味しますか?別のスキーマの場合は、2つのスキーマが別々のデータベースにある場合、または同じデータベース内に両方のスキーマから選択できるようにする権限がある場合は、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; 
+0

ありがとうございました! 2つのスキーマが同じdbにあり、権限はOKです。 グループの後にadm.some_product_table.productnameを付けてください。 – STO

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

こんにちは、私は意志このクエリの仕事だけで興味があります:あなたはこれをやりたいようにそれはそう多くの詳細を知らなくても

? products.ProductNameを選択 、で商品コード商品名でグループ(たOrderDetailsから 選択OrderDetails.productid にはOrderDetails.productid によってOrderDetails.orderid = orders.orderid グループに注文に参加左)製品からのカウント(*)。 – sourabh1024

+0

これは「機能する」が、おそらくすべての製品に対して「1」を返します。 –

+0

注文表は後で条件が必要な場合に必要です。それが誤解を招く場合は申し訳ありません。 – STO

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; 
+0

このコードは問題を解決するかもしれませんが、良い答えには常に説明が含まれているはずです。 – BDL

関連する問題