MySQL按ID计算值

时间:2017-11-13 09:44:11

标签: php mysql

不确定标题是否解释了我正在尝试做的事情,但是我无法说出来。

我正在尝试为一些图创建输出。我的目标输出只是mySQL表中按类别ID分组的某些行的总值。我的表格如下:

Transactions:

TransactiondID | TransactionName |TransactionCategory| Value
*************************************************************
       1       |  GenericText1   |      1            | 30
       2       |  GenericText2   |      1            | 38
       3       |  GenericText2   |      2            | 38

我的TransactionCategory参考数据

TranCatID | TransCatName
*************************
    1     | Tranportation
    2     | Petrol

所以我想要做的是每个类别的值字段的SUM。所以我会得到一个输出。

Category       | Value
****************************
Transportation | 68
Petrol         | 30

我得到了这个,但它不起作用。我认为这完全不正确,但想表明我的尝试。

SELECT SUM( `TransactionValue`) AS Value, 
transaction_category.transaction_category
FROM Transactions 
JOIN transaction_category on Transactions.TransactionID = transaction_category_id

3 个答案:

答案 0 :(得分:1)

通过“TransactionCategory”或“TranCatID”进行分组,可以得到如下所示的结果:

SELECT TransactionCategory.TransCatName, SUM( `Value`) AS Value FROM Transactions  JOIN TransactionCategory on Transactions.TransactionCategory = TransactionCategory.TranCatID GROUP BY TransactionCategory.TransactionCategory;

or

SELECT TransactionCategory.TransCatName, SUM( `Value`) AS Value FROM Transactions  JOIN TransactionCategory on Transactions.TransactionCategory = TransactionCategory.TranCatID GROUP BY TransactionCategory.TranCatID;

答案 1 :(得分:0)

这应该可以解决问题

SELECT TransactionCategory.TransCatName,
    SUM(Transactions.Value) as Value
FROM Transactions
    LEFT JOIN TransactionCategory ON TransactionCategory.TranCatID = Transaction.TransactionCategory

答案 2 :(得分:0)

您可以使用:

SELECT tc.TransCatName Category, SUM(t.Value) as Value
FROM TransactionCategory tc
LEFT JOIN Transactions t ON tc.TranCatID = t.TransactionCategory
group by tc.TransCatName

SQL HERE

<强>输出

Category       | Value
-----------------------
Petrol         | 38
Transportation | 68

请注意<{>> PETROL 的SUM,如上所述38,在您的问题说明中写错了30