Перекрестный запрос

Ximik_rus

Новичок
Перекрестный запрос

Народ, хелп!

Есть таблица (типа опросник, первая колонка ID, все остальные ответы на вопросы)

Клиент |Вопрос 1|Вопрос2|Вопрос 3|
Клиент 1| 3 | 2 | 3|
Клиент 2| 5 | 4 | 3|
....

Какой запрос надо написать, чтобы получить таблицу вроде этого

Ответ | Вопрос 1 | Вопрос 2 | Вопрос 3 |
1 | всего 5 | Всего 2 | Всего 1 |
2 | всего 5 | Всего 2 | Всего 1 |
3 | всего 3 | Всего 5 | Всего 7 |
4 | всего 2 | Всего 2 | Всего 2 |
5 | всего 5 | Всего 2 | Всего 1 |

Большое спасибо за ответ
 

Ximik_rus

Новичок
Это понятно, но что с чем группировать? Пораздельности все получается, но 3 таблицы мне не надо, мне нужна одна

Можно написать запрос, pls.
 

Gas

может по одной?
я вообще не понял что нужно получить.
 

zerkms

TDD infected
Команда форума
Gas
что-то сгруппировать, что-то посчитать... 99% что каунт + групбай :)

а так, да, объяснение "слегка" сумбурное. если мой ответ не вполне устроил - предлагаю попытаться изъясниться ещё разок :)
 

Ximik_rus

Новичок
Есть таблица

Колонки
ID клиента
Вопрос 1
Вопрос 2
Вопрос 3

Значения в полях Вопрос от 1 до 5

требуется сделать перекрестную таблицу

Поля:
Ответ (1, 2, 3, 4, 5)
Вопрос 1 (количество ответов 1) ... (количество ответов 5)
Вопрос 2 (количество ответов 1) ... (количество ответов 5)
Вопрос 3 (количество ответов 1) ... (количество ответов 5)
 

zerkms

TDD infected
Команда форума
хз, навскидку не придумал как просто можно транспонировать выборку в mysql.
 

Gas

может по одной?
можно попробовать так:

Код:
SELECT tmp.v, SUM(tmp.v=t.question_1) as q1, SUM(tmp.v=t.question_2) as q2, ...
FROM (SELECT 1 v UNION SELECT 2 v UNION SELECT 3 v UNION SELECT 4 v UNION SELECT 5 v) AS tmp, 
CROSS JOIN `your_table` AS t
GROUP BY tmp.v
ORDER BY tmp.v;
p.s. тут конечно нужно понимать, что перед группировкой, в памяти создастся таблица в 5 раз большая исходной.
 
Сверху