2016-07-12 3 views
0

参加は私のテーブルです..and私はこの出力をしたい:SQLはここで三台

pid | pname | custname | quantity | total base price | sale price | profit 

はスキーマ:

create table customers 
(
    cid int, 
    cname varchar(1000), 
    cg varchar(1000) 
) 

create table prod 
(
    pid int, 
    pname varchar(1000), 
    baseprice int, 
    saleprice int 
) 

create table orders 
(
    oid int, 
    custid int, 
    pid int, 
    quantity int, 
    odate date 
) 

私はこのためにクエリを記述するにはどうすればよいですか?

+2

何を試しましたか? – sagi

+0

[joins](http://www.w3schools.com/sql/sql_join.asp)を見て、 'mysql'または' sql-server'を使用しています... –

答えて

0
--pid | pname | custname | quantity | total base price | sale price | profit 
select o.pid, p.pname, c.cname AS custname, SUM(o.quantity) AS quantity, 
SUM(p.baseprice) AS 'total base price', SUM(p.saleprice) AS 'sale price', 
SUM(p.baseprice) - SUM(p.saleprice) AS profit -- change this math to what you need 
from orders o join prod p 
on o.pid = p.pid 
join customers c 
on o.custid = c.cid 
group by o.pid, p.pname, c.cname 
+0

実際には動作していますが、わかりません注文後oプロダクトに参加する o.pid = p.pid o.custid = c.cidの に参加する o.pid、p.pname、c.cnameでグループを分けてもらえますか?こちらでした – jhon

+0

何卒お答え下さい。 – jhon

+0

私はあなたが何を求めているかは100%確信していませんが、クエリーは後で結合で完全なテーブル名を使用する必要がないように、テーブルのエイリアスに文字(o、p、c)を使用しています。そして、 'group'節は、' select'節で値を 'SUM'するために必要です。そこで、値をロールアップするフィールドをグループ化します。これが新しい概念であれば、あまり気にしないでください。グループ分けは、把握するのに時間がかかることの1つです。 –

0
select 
    a.pid , 
    a.pname , 
    c.cname , 
    b.quantity , 
    a.baseprice * b.quantity as TotalBasePrice , 
    a.saleprice*b.quantity as TotalSalePrice , 
    a.saleprice*b.quantity - a.baseprice * b.quantity as profit 
from prod as a 
    inner join orders as b on a.pid = b.pid 
    inner join customers as c on b.custid = c.cid 
+0

ありがとうございましたu r gr8 ..it's working – jhon

関連する問題