2017-09-12 99 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