首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL左加入错误-体育应用程序

SQL左加入错误-体育应用程序
EN

Stack Overflow用户
提问于 2014-02-16 18:45:57
回答 1查看 39关注 0票数 0

我很难加入一个计数到我的查询。我有一张存储目标事件的桌子。每一列‘得分手’'assist1‘和'assist2’都持有玩家ids。我试图找出一个球员出现在射手、assist1或assist2中的次数,但是只有当类型是pp时才会出现。

代码语言:javascript
复制
goalEvents

 gid scorer assist1 assist2 type
  1    1       2       3     eve
  1    1       2      NULL   pp
  1    1       2       3     sh

查询

代码语言:javascript
复制
SELECT 
    p.playerid, p.playernum,
    CONCAT_WS('. ', SUBSTR(p.playerfname, 1, 1), p.playerlname) name,
    COALESCE(pp.powerplay, 0) PPP
FROM players p
LEFT JOIN (
    SELECT COUNT(*) AS powerplay FROM goalEvents WHERE scorer = p.playerid OR assist1 = p.playerid OR assist2 = p.playerid AND type='pp'   
) pp 
WHERE p.playerteam = 1

作为最终结果我想要什么

代码语言:javascript
复制
id   name  PPP
 1 P. Name  1
 2 A. Name  1
 3 S. Name  0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-02-16 20:07:12

删除左联接子句,并在返回列中添加一个子选择。还要注意括号,以便将OR's与AND分隔开。尝试这样的方法(未经测试):

代码语言:javascript
复制
SELECT 
    playerid, 
    playernum,
    CONCAT_WS('. ', SUBSTR(playerfname, 1, 1), playerlname) name,
    (SELECT COUNT(*) AS powerplay FROM goalEvents 
     WHERE (scorer = playerid OR assist1 = playerid OR assist2 = playerid) 
     AND type='pp') AS PPP
FROM players
WHERE playerteam = 1
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21815772

复制
相关文章

相似问题

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