0
我有一張submissions
桌子,其中有type
或tip
或request
。試圖在一張桌子內獲得2筆加入加入
我試圖抓住一個特定用戶的所有提交(顯示爲他們的儀表板上所有活動的聚合)。
E.g. You have submitted: 5 requests and 1 tip
。
我的提交創建表看起來像這樣:
Table: submissions
Create Table: CREATE TABLE `submissions` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`slug` varchar(255) NOT NULL,
`description` mediumtext NOT NULL,
`user_id` int(11) NOT NULL,
`created` datetime NOT NULL,
`type` enum('tip','request') NOT NULL,
`thumbnail` varchar(64) CHARACTER SET latin1 DEFAULT NULL,
`removed` tinyint(1) unsigned NOT NULL DEFAULT '0',
`keywords` varchar(255) NOT NULL,
`ip` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
FULLTEXT KEY `search` (`title`,`description`,`keywords`)
) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
,我想出了一個查詢工作,並給我的用戶提交的內容量,但是因爲每個提交(一行回來)保存鍵入tip
或request
。所以我想弄清楚如何彙總這些信息。
我的查詢返回用戶所有tip
s。我正在嘗試爲request
s做一個。
SELECT users.*, count(submissions.id)
AS "tipsCount"
FROM users
LEFT JOIN submissions on users.id = submissions.user_id
WHERE username = 'blahbster'
AND submissions.type = 'tip'
ORDER BY submissions.created DESC
LIMIT 1;
也許我可以在這裏使用一筆款項?我嘗試:
SELECT users.*,
SUM(case when type = 'tip' then 1 else 0 end) as "tipsCount"
SUM(case when type = 'request' then 1 else 0 end) as "requestsCount"
FROM users
LEFT JOIN submissions on users.id = submissions.user_id
WHERE username = 'blahbster'
ORDER BY submissions.created DESC
LIMIT 1;
歡迎來到SO! – Strawberry
非常好。謝謝你解釋我需要什麼。 –