2013-10-22 40 views
-4

我試圖做這樣的事情:SQL多計數和JOIN

User_guid | Post Message | Discussion board | Total | 

1 | 300 | 25 | 325 | 

2 | 15 | 185 | 200 | 

3 | 100 | 203 | 303 | 

,但我不知道怎麼辦。

我有發帖子的結果與此查詢:

SELECT COUNT(*) as 'Quantidade' , users_entity.name , users_entity.username 
FROM river 
JOIN users_entity 
ON river.subject_guid = users_entity.guid 
AND river.action_type = 'create' 
AND river.view = 'river/object/thewire/create' 
GROUP BY river.subject_guid ORDER BY 'Quantidade' DESC 

,我有這個查詢的結果的討論:

SELECT COUNT(*) as 'Quantidade' , users_entity.name , users_entity.username 
FROM river 
JOIN users_entity 
ON river.subject_guid = users_entity.guid 
AND river.action_type = 'reply' 
GROUP BY river.subject_guid ORDER BY 'Quantidade' DESC 

但我不知道如何加入這些結果users_entity表的行。總的互動應該是帖子信息和討論板值的總和。有人可以幫助我嗎?謝謝。

+0

兩個查詢你也應該通過users_entity.guid解釋你的當前架構 –

回答

1

很難說沒有表結構和樣本數據(這就是爲什麼你得到了下來票),但你可能需要的東西是這樣的:

SELECT 
    users_entity.name, 
    users_entity.username, 
    COUNT(CASE WHEN river.action_type = 'create' AND river.view = 'river/object/thewire/create' THEN 1 END) AS Post_Message, 
    COUNT(CASE WHEN river.action_type = 'reply' THEN 1 END) AS Discussion_Board 
FROM river 
JOIN users_entity ON users_entity.guid = river.subject_guid 
GROUP BY 
    users_entity.name, 
    users_entity.username 
ORDER BY ??? 

我不確定您想要哪個值ORDER BY與合併查詢。

+0

它'秩序。我會盡力做到這一點,謝謝 –

+0

它爲我工作,非常感謝。 –

+0

你知道我該怎麼做才能在此查詢中加入另一個表的計數結果? –

0

或許這對你的作品:

SELECT data1.username, data1.count1, data2.count2, data1.count1+data2.count2 from 
(
SELECT COUNT(*) as 'count1' , users_entity.name , users_entity.username 
FROM river 
JOIN users_entity 
ON river.subject_guid = users_entity.guid 
AND river.action_type = 'create' 
AND river.view = 'river/object/thewire/create' 
GROUP BY river.subject_guid ORDER BY 'Quantidade' DESC 
) data1, 
(
SELECT COUNT(*) as 'count2' , users_entity.name , users_entity.username 
FROM river 
JOIN users_entity 
ON river.subject_guid = users_entity.guid 
AND river.action_type = 'reply' 
GROUP BY river.subject_guid ORDER BY 'Quantidade' DESC) data2 where data1.username = data2.username 
0

你可以試着加入這樣

SELECT river_create.Quantidade AS create_q, river_reply.Quantidade AS reply_q, river_create.full_name, river_create.u_name, river_create.user_id 
    FROM 
    (SELECT COUNT(*) as 'Quantidade' , users_entity.name AS full_name, users_entity.username AS u_name, users_entity.guid AS user_id 
     FROM river 
     JOIN users_entity 
     ON river.subject_guid = users_entity.guid 
     AND river.action_type = 'create' 
     AND river.view = 'river/object/thewire/create' 
     GROUP BY river.subject_guid ORDER BY 'Quantidade' DESC) AS river_create 
    INNER JOIN 
    (SELECT COUNT(*) as 'Quantidade' , users_entity.name , users_entity.username, users_entity.guid as reply_user_id 
     FROM river 
     JOIN users_entity 
     ON river.subject_guid = users_entity.guid 
     AND river.action_type = 'reply' 
     GROUP BY river.subject_guid ORDER BY 'Quantidade' DESC) AS river_reply 
ON river_create.user_id = river_reply.reply_user_id