如何在一个表中显示多行,另一表中的一行显示为单行
Posted
技术标签:
【中文标题】如何在一个表中显示多行,另一表中的一行显示为单行【英文标题】:How display multiple rows in a table with one row in another table as single row 【发布时间】:2011-12-14 06:16:57 【问题描述】:我有两张桌子。 表“用户”包含 user_id、user_name 表“事务”包含 user_id、事务
例如:
TABLE USER:
user_id, user_name
1, Ram
2, John
3, Rahim
TABLE Transactions
user_id, transactions
1, 500
1, 300
2, 250
1, 450
3, 100
1, 250
3, 50
我想将结果显示为:
user_name, Total
Ram, 1500*
John, 250
Rahim, 150
它是该特定用户的所有交易的总和
我该怎么做?
【问题讨论】:
我的问题有误。我的结果应该是:user_id,Total。 (不是用户名,总计)抱歉给您造成了困扰。 帖子已编辑。无论如何,我认为你得到了正确的答案。 再次抱歉。在重写我的评论之前,我只是按了“回车”键。我需要用户名,总计(例如:Ram,1500)。请忽略我最后的评论。再次为我的错误道歉 好吧,所以创世纪的答案是正确的。 非常感谢! ***.com 摇滚 【参考方案1】:SELECT
u.user_name,
SUM(t.transactions) Total
FROM users u
LEFT JOIN transactions t ON t.user_id = u.user_id
GROUP BY t.user_id
我认为你应该使用 LEFT JOIN 因为它应该在任何情况下选择用户的总数(NULL),即使它是 0
【讨论】:
如果用户想要的所有数据都在同一个表中,为什么还需要连接? 似乎是这样,但正如您所看到的,在他的示例中,他输入的是 user_id 而不是 user_name。我也很困惑。 @Aur 是的,如果他想要 user_id,你的回答很好。我们会看到 谢谢。我问是因为你的回答很好,是我在意识到这个例子之前的第一个想法。 我知道如何显示单个表中的字段。但是我错误地写了我的问题。我需要用户名,总计(例如:Ram,1500)。【参考方案2】:SELECT u.user_id , SUM(t.transactions) AS total
FROM user AS u JOIN transactions AS t
GROUP BY u.user_id
【讨论】:
【参考方案3】:试试
SELECT
u.user_id,
sum(t.transactions) as total
FROM
user u
JOIN transactions t ON u.user_id = t.user_id
GROUP BY
u.user_id
【讨论】:
以上是关于如何在一个表中显示多行,另一表中的一行显示为单行的主要内容,如果未能解决你的问题,请参考以下文章
Datatable C# - 如何根据 ID 从一个表中获取详细记录及其关联的另一表中的子记录
如何解决ORACLE中表一得列名的别名为另一表中的某一字段的值?
vlookup函数基本使用--如何将两个Excel表中的数据匹配;excel表中vlookup函数使用方法将一表引到另一表