2016-03-02 4 views
1

У меня есть таблица, как этотCount записей из разных столбцов (MySQL/PHP)

 id | block1 | block2 | block3 
----------------------------------------------- 
    1 | John | John | 
    2 | Mark |   | 
    3 |   | Frank | Frank 

как я подсчитать, сколько джон, Марк и Франк находятся в таблице? эс.

John - 2 
Mark - 1 
Frank - 2 

я использую запрос ниже, но только для одного столбца и я не знаю, как иметь тот же результат для всех столбцов. Я думаю, что это полезный запрос becouse я прочитал можно получить результаты, возможно, за последний месяц или год

SELECT block1, 
COUNT(*) AS total 
FROM table 
GROUP BY block1 
ORDER BY total DESC; 

спасибо (простите за мой английский)

ответ

1

Вы можете использовать UNION ALL для UNPIVOT таблицы, затем применить группировку:

SELECT block, COUNT(*) AS 'total' 
FROM (
    SELECT block1 AS block 
    FROM mytable  

    UNION ALL 

    SELECT block2 
    FROM mytable  

    UNION ALL 

    SELECT block3 
    FROM mytable) AS t 
GROUP BY block 
+0

большое спасибо! помоги мне, ты помогаешь мне много. Работа отлично для меня – gege

+0

@gege Рад, что я смог помочь и приветствую Stack Overflow. Пожалуйста, отметьте это или любой другой ответ, как принято, если это поможет вам решить вашу проблему. –

0

Выбрать столбцы отдельно и использовать UNION, чтобы объединить их. Затем COUNT их. Вы можете попробовать это -

SELECT col_block, COUNT(col_block) FROM (
(SELECT block1 col_block, 
FROM table) 
UNION ALL 
(SELECT block2 col_block, 
FROM table) 
UNION ALL 
(SELECT block3 col_block, 
FROM table)) tbl 
GROUP BY col_block 
+0

спасибо в любом случае, я использую сообщение для запроса от Georgos Betsos – gege

+0

@gege Оба одинаковы. :) –

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