首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内连接只显示表中的第一行。

内连接只显示表中的第一行。
EN

Stack Overflow用户
提问于 2018-12-25 01:16:00
回答 1查看 120关注 0票数 1

我的数据库中有以下数据:

scu_banks:

代码语言:javascript
复制
---------------------------------
|   id    |   type   |   name   |
|-------------------------------|  
|    1    |    1     |   One    |
|    2    |    1     |   Two    |
|    3    |    2     |  Three   |
|    4    |    3     |   Four   |
---------------------------------

scu_statement:

代码语言:javascript
复制
---------------------------------
|   id    |   code   |   mutation   |
|-----------------------------------|  
|    1    |    1     |     100      |
|    2    |    1     |     200      |
|    3    |    2     |     500      |
|    4    |    1     |     500      |
-------------------------------------

我想要做的是选择表scu_banks中的所有行,并显示突变的总数。数据应表示如下:

代码语言:javascript
复制
--------------------------------------------------------------
| scu_banks.type | scu_banks.name |   total   | scu_banks.id |
--------------------------------------------------------------
|       1        |      One       | € 800.00  |      1       |
|       1        |      Two       | € 500.00  |      2       |
|       2        |     Three      | €   0.00  |      3       |
|       3        |      Four      | €   0.00  |      4       |
--------------------------------------------------------------

当我运行我的sql语句时,我得到以下数据:

代码语言:javascript
复制
---------------------------------------------------------------
| scu_banks.type | scu_banks.name |    total   | scu_banks.id |
--------------------------------------------------------------
|       1        |      One       | € 1300.00  |      1       |
---------------------------------------------------------------

在这种情况下我得到的数据是不正确的。1300.00欧元,这是表scu_statement中所有突变的总和。该语句也不显示数据库中的其他行。

有人知道我的sql语句有什么问题吗?

下面是我的sql语句:

代码语言:javascript
复制
SELECT      scu_banks.type,
            scu_banks.name, 
            CONCAT('€ ', FORMAT(IFNULL(SUM(scu_statement.mutations), 0),2)) AS total, 
            scu_banks.id
FROM        scu_banks
INNER JOIN  scu_statement
ON          scu_banks.id = scu_statement.code
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-25 01:47:24

在子查询中进行聚合,并将其加入银行。

代码语言:javascript
复制
SELECT b.type "scu_banks.type",
       b.name "scu_banks.name",
       concat('€ ', format(coalesce(x.mutation, 0), 2)) "total",
       b.id "scu_banks.id"
       FROM scu_banks b
            LEFT JOIN (SELECT s.code,
                              sum(s.mutation) mutation
                              FROM scu_statement s
                              GROUP BY s.code) x
                      ON x.code = b.id;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53918688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档