使用Postgres 9.5。
我试图获得用户提交链接投票的总和。想想Reddit业力,SO等。
对于提交了links
的用户来说,它非常适用,但是当用户没有links
时,我的回复就会得到0行。
这是SUM(links.votes)还是内连接的问题?我对SQL很陌生,所以我可能会从错误的角度出发。
我的查询如下:
SELECT
users.firstname,
users.lastname,
users.email,
users.created_on,
SUM(links.votes) AS sum
FROM users
INNER JOIN links
ON users.id = links.created_by
WHERE users.id = 50
AND links.created_by = 50
GROUP BY users.firstname, users.lastname, users.email, users.created_on
我也试过COALESCE(SUM(links.votes), 0) AS sum
认为它会在'总和中返回0。专栏,但这也不起作用。
这里有什么想法吗?
谢谢!
答案 0 :(得分:2)
您需要override func didMove(to view: SKView) {
let sprite1 = SKSpriteNode(imageNamed: "Spaceship")
sprite1.anchorPoint = CGPoint(x:0.5,y:0.5)
sprite1.position = CGPoint.zero
sprite1.zPosition = 1
let sprite2 = SKSpriteNode(imageNamed: "Spaceship")
sprite2.anchorPoint = CGPoint(x:0.5,y:0.5)
sprite2.position = CGPoint(x:0,y:300)
addChild(sprite1)
addChild(sprite2)
let intersection = sprite1.frame.intersection(sprite2.frame)
let miniSprite = SKSpriteNode(color:.red,size:intersection.size)
miniSprite.alpha = 0.5
miniSprite.anchorPoint = CGPoint(x:0.0,y:0.0)
miniSprite.position = intersection.origin
miniSprite.zPosition = 2
sprite1.parent!.addChild(miniSprite)
let croppedNode = SKCropNode()
croppedNode.maskNode = sprite1.copy() as? SKNode
croppedNode.zPosition = 3
sprite1.addChild(croppedNode)
let biggy = SKSpriteNode(color: .white, size: (scene?.size)!)
miniSprite.move(toParent:croppedNode)
}
:
left join
请注意,SELECT u.firstname, u.lastname, u.email, u.created_on,
SUM(l.votes) AS sum
FROM users u LEFT JOIN
links l
ON u.id = l.created_by AND
l.created_by = 50
WHERE u.id = 50
GROUP BY u.firstname, u.lastname, u.email, u.created_on;
表中的条件位于links
子句而不是ON
子句中。
答案 1 :(得分:1)
您需要 LEFT OUTER JOIN ,并且您必须能够处理NULL,即在不存在投票的情况下SUM的结果。 您可以使用 CASE 使您的语句返回0而不是NULL。