2011-08-18 23 views
0

我想創建一個基本上可以計算由於各種條件引起的點的SQL語句。例如,我有表:用戶,追隨者,圖片來自各種表格的MySQL求和點

追隨者和圖片有USER_ID,和用戶有一個名爲「關於」

我想要做某種選擇從哪裏獲得的總和列:

1)如果users.about不是空的,這是值得100點

2)如果用戶擁有至少一個pictures.type = 「東西」,這是值得50分

3)對於與該用戶關聯的每個跟隨者,g每個20分

所以這個SQL語句應該選擇這三個計算的總和。之後,我想使用這個SQL創建一個基本上列出user_id及其相關分數的視圖。

我嘗試了各種排列但沒有任何工作。我將如何做到這一點?謝謝!

回答

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 = #### 
+0

順便說一句,如果你需要一個版本的聯合查詢返回多個用戶在一個查詢的讓我知道。 – Ariel