2015-04-22 69 views
2

我有兩個SQL表。SQL:如何使用另一個表中的信息來選擇一些信息

在第一個表中,每一行具有(在其他領域不相關的問題)一個scorecategory_id字段

第二個表(categories)是列出所有可能的類別的表,該表的第一個表中的元素可以屬於。

我想要做下面的SQL請求:

SELECT category_name, (???) AS category_score 
FROM categories 
ORDER BY category_score DESC 

其中??? = the sum of the scores of all the elements in table 1 that belong to the category

回答

3

你可以joingroup by

SELECT category_name, SUM(score) AS category_score 
FROM  categories c 
JOIN  element e ON c.category_id = e.category_id 
GROUP BY category_name 
ORDER BY 2 DESC 
+0

感謝您的回答,我不知道'組by',我會考慮它。只是一個簡單的問題,但我沒有看到'ORDER BY 2 DESC'部分?爲什麼不是'GROUP BY category_score DESC'例如? –

+0

@Malimalo'group by'子句將結果分解爲組,因此集合函數(如'sum')可以獨立應用於'category_name'的每個唯一值。一旦完成,結果仍然需要排序,這是通過'order by'子句完成的。 – Mureinik

+0

謝謝你的回答,它實際上是'order by'中的'2',我沒有得到。但是,我在提問之前做了我應該做的事情,搜索了它並得到了我的答案(這意味着「選擇線的第二個元素的順序」)非常快。感謝您的幫助 ;) –

相關問題