2014-10-23 2 views
0
 
CREATE TABLE IF NOT EXISTS `usuarios` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `user1` varchar(255) DEFAULT NULL, 
    `user2` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; 

INSERT INTO `usuarios` (`id`, `user1`, `user2`) VALUES 
(1, 'pepe', NULL), 
(2, 'pepe', 'juan'), 
(3, 'juan', NULL), 
(4, 'juan', NULL), 
(5, 'juan', 'pepe'), 
(6, NULL, 'pepe'), 
(7, 'pepe', 'juan'); 

Мне нужно сделать запрос: Я сделал это:MySQL - Как группа по на двух полях и сосчитать

 
SELECT 
`user1`, 
COUNT(`id`) AS Total 
FROM usuarios 
WHERE (`user1` is not null) 
GROUP BY `user1` 
UNION 
SELECT 
`user2`, 
COUNT(`id`) AS Total 
FROM usuarios 
WHERE (`user2` is not null) 
GROUP BY `user2` 

Но результат:

 
user1 total 
juan  3 
pepe  3 
juan  2 
pepe  2 

мне нужно для удаления дубликатов имен, суммировать общее количество, и это результат:

 
user1 total 
juan  5 
pepe  5 
+0

SELECT user1, SUM (всего) всего FROM (ваш запрос здесь) x GROUP BY user1; ?? – Strawberry

ответ

1

или, если код меньше вашего thang ...

SELECT user,COUNT(*) FROM 
    (
     SELECT user1 user FROM usuarios 
     UNION ALL 
     SELECT user2 FROM usuarios 
    ) x 
WHERE user IS NOT NULL 
GROUP 
    BY user; 
+0

Большое спасибо. работает отлично. – Jose

Смежные вопросы