2010-10-18 50 views
1

表一(作者表)我有3個表如何加入他們生成一個表?

 
author_id 
author_name 

表B(後表)

 
post_id 
author_id 

表C(收益表)

 
post_id (post id is not unique) 
post_earning 

我想生成一個報告由盈利每位作者。

 
author_id 
author_name 
total_earning (sum of earnings of all the posts by author) 

SQL查詢中使用:

SELECT 
    a.author_id, 
    a.author_name, 
    sum(post_earnings) as total_earnings 
FROM TableA a 
Inner Join TableB b on b.author_id = a.author_id 
Inner Join TableC c on c.post_id = b.post_id 
Group By 
    a.author_id, 
    a.author_name 

我得到的結果是這樣的:

 
ID user_login total_earnings 
2 Redstar 13.99 
7 Redleaf 980.18 
10 topnhotnews 80.43 
11 zmmishad 39.27 
13 rashel 1248.34 
14 coolsaint 1.66 
16 hotnazmul 9.83 
17 rubel 0.14 
21 mahfuz1986 1.09 
48 ripon 12.96 
60 KHK 27.81 

總營收的總和實際上是2863.22。但是,如果我添加結果表的所有值,我將得到2415.問題在哪裏?所使用的樣本表可以從第一條評論的鏈接中下載。

回答

1

您確定您在表格中有正確的數據。也許一個作者在TableA中丟失或者在posts表中丟失了一些帖子。

+0

你是對的我在帖子表中缺席了一些帖子。 Sitepoint論壇的一位sql大師指出了這一點。感謝您的答覆。 – coolsaint 2010-10-19 18:42:56

3
SELECT 
    a.author_id, 
    a.author_name, 
    sum(post_earnings) as total_earnings 
FROM TableA a 
Inner Join TableB b on b.author_id = a.author_id 
Inner Join TableC c on c.post_id = b.post_id 
Group By 
    a.author_id, 
    a.author_name 
+0

不幸的是總收入的總和實際上是2863,但上面的查詢給出了個人收入的總和= 2415這裏是我使用的表格http://www.newsnidea.com/downloads/wp_users.csv http:// www.newsnidea.com/downloads/wp_posts.csv http://www.newsnidea.com/downloads/earning.csv – coolsaint 2010-10-18 04:28:57

+0

@ user478879我需要查看更多關於指定表的信息。如果你發佈表格的DDL,也許是一組樣本數據,我可能會進一步幫助你。 – 2010-10-18 04:33:17

+0

我已經把表格放在先前的評論中。 – coolsaint 2010-10-18 04:41:05