2017-09-12 71 views
0

不同表的两列我创建了两个表CD如何总结在SQL

**Books** **Book_id** **author** **publisher** **rate** angular2 132 venkat ts 1900 angular 160 venkat ts 1500 html 5 165 henry vk 1500 html 231 henry vk 2500 css 256 mark adobe 1600 java 352 john gulberg 4500 c# 450 henry adobe 1600 jsp 451 henry vk 2500 ext js 555 kv venkat w3 5102 html 560 kv venkat gulberg 5000 java2 561 john gulberg 9500 java8 651 henry vk 1650 js 654 henry ts 2500 java 777 babbage adobe 5200 phython 842 john ts 1500 spring 852 henry w3 6230 spring 895 mark tut 4250 ext js 965 henry gulberg 4500

book_id    Cd_name   Cd_price 
132     angular2   500 
132     angular1   600 
132     angular basics 600 
132     angular expert 900 
160     begineer_course 1200 
160     angular_templates 500 
165     html_tutorials 900 
165     bootstrap   1000 
256     css styles  650 
256     expert css  900 
555     extjs    1200 
555     exjs_applications 500 
777     core java   2500 
777     java swing  4500 
777     java tutorials 1500 
842     phython   650 
852     spring   900 
852     spring mvc  900 

在上面两个表我想加入的书籍,作者, cd_name以及每个id的book和cd的总成本。

期望输出

Books  Book_id  author cd_name  total price 
angular2 132   venkat angular2   2400 
angular2 132   venkat angular basics 2100 
angular2 132   venkat angular expert 2800 
java  777   babbage core java  7700 

像上面的结果,我需要得到所有书籍的总成本和CD

+0

我建议宁愿使用简单的“rate + cd_price AS total_price”而不是任何SUM函数。为了做到这一点,只需加入两张表。 – Tyron78

+0

你到目前为止尝试过什么?请发布您的查询(ies)? – etsa

+0

选择书籍,作者,CD_NAME,速度,cd_price 从书 加入CD 上book.book_id = cd.book_id 其中(book.rate + cd.cd_price)作为TOTAL_PRICE –

回答

2

如果不是所有的书有CD:

SELECT A.Books 
     , A.Book_ID 
     , A.Author 
     , B.CD_Name 
     , A.rate+COALESCE(B.Cd_price,0) AS TOTAL_PRICE 
FROM BOOK A 
LEFT JOIN CD B ON A.BOOK_ID = B.BOOK_ID 

问题的作者证实说:“表名是书不是书”

我最初使用书籍,是“建议”,是因为(通常)表名是复数。

+0

@Jerold:不请编辑答案,但发表评论... – etsa

+0

为什么这段代码不工作------- -------选择书籍,作者,cd_name,费率,cd_price 从书 加入cd 上书.book_id = cd.book_id where(book.rate + cd.cd_price)as total_price –

+0

语法错误:您无法将“WHERE(book.rate + cd.cd_price)”写为total_price“。你不能在WHERE中使用AS。相反,您可以编写例如“WHERE(book.rate + cd.cd_price)> 100”(可以删除P.S.支架) – etsa

2

试试这个

select books, b.book_id, author, cd_name, (b.rate+c.cd_price) as total_price from book b 
join cd c on b.book_id = c.book_id