MySQL从各种表中总结点

时间:2011-08-18 20:35:27

标签: mysql

我正在尝试创建一个SQL语句,它基本上会因各种条件而计算点数。例如,我有表:用户,粉丝,图片

关注者和图片有一个user_id,用户有一个名为“about”的列

我想做一些选择,我得到的总和:

1)如果users.about不为空,则值得100分

2)如果用户拥有至少一张pictures.type =“something”,那就值50分

3)对于与该用户相关联的每个关注者,每次提供20分

所以这个SQL语句应该选择这三个计算的总和。之后,我想使用此SQL创建一个基本上列出user_id及其相关分数的视图。

我尝试了各种排列但没有任何效果。我该怎么做?谢谢!

1 个答案:

答案 0 :(得分:0)

这是一种方式:

SELECT sum(points) FROM (
  SELECT 100 points FROM users WHERE about <> '' AND user_id = ####
  UNION
  SELECT 50 points FROM users WHERE EXISTS (SELECT * FROM pictures WHERE user_id = ####)
  UNION
  SELECT 20 points FROM followers WHERE user_id = ####
)

这是第二种方式:

SELECT IF(about <> '', 100, 0)
     + IF(EXISTS (SELECT * FROM pictures WHERE pictures.user_id = users.user_id), 50, 0)
     + (SELECT SUM(20) FROM followers WHERE followers.user_id = users.user_id) points
FROM users
WHERE user_id = ####