首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >连接两个表X和Y以显示Total sum()结果事件表Y为空

连接两个表X和Y以显示Total sum()结果事件表Y为空
EN

Stack Overflow用户
提问于 2015-08-28 10:27:57
回答 1查看 39关注 0票数 2

我有2个表,我需要加入和数量的基础上的要求。这是表的结构。

代码语言:javascript
复制
Customer
---------------------------------------------------
ID | Name        | Tel          | Sex
---------------------------------------------------
1  | John        | 123 XXXX     |  M
2  | Peter       | 456 XXXX     |  M
3  | Alice       | 789 XXXX     |  F
4  | Amy         | 147 XXXX     |  F

Transaction
---------------------------------------------------
ID | CustID | TranID | Books | Pens | Rulers
---------------------------------------------------
1  |   1    | Jan    |   1   |   1  |   0
2  |   1    | Feb    |   1   |   0  |   0
3  |   2    | Jan    |   1   |   0  |   1
4  |   2    | Jan    |   1   |   0  |   0
5  |   3    | Feb    |   0   |   1  |   1
6  |   4    | Feb    |   1   |   1  |   0
7  |   3    | Feb    |   1   |   1  |   0
8  |   4    | Feb    |   0   |   0  |   1
9  |   3    | Jan    |   1   |   0  |   0
10 |   2    | Jan    |   1   |   1  |   0

Required Results (Sex=F, TranID=Jan, Sum:Books, Pens & Rulers)
--------------------------------------------------------------
Name        | Tel         | Sex | B.TOT | P.TOT | R.TOT
--------------------------------------------------------------
Alice       | 789 XXXX    |  F  |   1   |   0   |   0
Amy         | 147 XXXX    |  F  |   0   |   0   |   0

我尝试使用下面的SQL语句,只要Transaction Table不为空,它就能正常工作。

代码语言:javascript
复制
select 
`customer`.name,
`customer`.tel,
`customer`.sex,
sum(if(`transaction`.TranID = 'JAN',books,0)) as B.Tot,
sum(if(`transaction`.TranID = 'JAN',pens,0)) as P.Tot,
sum(if(`transaction`.TranID = 'JAN',rulers,0)) as R.tot,
from 
`customer` 
left join 
`transaction` 
on 
`customer`.id = `transaction`.custid
where
`customer`.sex = 'F'
Group by 
`customer`.id,
order by 
`customer`.name ASC

我如何修改上面的代码,以显示客户列表,在客户列表中,就连事务处理表都是完全空的?

EN

回答 1

Stack Overflow用户

发布于 2015-08-28 13:49:19

SQL查询

我希望这个查询能解决你的问题:

代码语言:javascript
复制
SELECT 
    c.name,
    c.tel,
    c.sex,
    IFNULL(SUM(t.books), 0) 'B.TOT',
    IFNULL(SUM(t.pens), 0) 'P.TOT',
    IFNULL(SUM(t.rulers), 0) 'R.TOT'
FROM
    customer c
        LEFT JOIN
    `transaction` t ON t.custid = c.id AND t.TranID = 'Jan'
WHERE
   c.sex = 'F'
GROUP BY c.id
ORDER BY c.name;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32262438

复制
相关文章

相似问题

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