У меня есть несколько таблиц с двумя из них: Diagnostics (test_id, test_name) и Evaluation (оценка_id, test_1, test_2, test_3). Test_1, 2, 3 - это внешние ключи, ссылающиеся на Diagnostics.test_id. Мне нужно подсчитать количество раз, когда каждый тест вводится (во всех 3 тестовых столбцах), показывать только те, которые были введены 3 или более раз, и дать их соответствующее имя_программы.
Мой текущий запрос:
SELECT test, count(*) Total
FROM
(SELECT test_1 AS test FROM Evaluation
UNION ALL
SELECT test_2 FROM Evaluation
UNION ALL
SELECT test_3 FROM Evaluation) d
GROUP BY test
HAVING COUNT(Total) > 2
ORDER BY test
Эти группы и подсчитывают каждый тест по трем столбцам, но не переводят тесты в соответствующие им имена тестов. Я относительно новичок в phpMyAdmin, поэтому любая помощь будет замечательной!
Попробуй это:
SELECT test, test_name, count(*) Total
FROM
(
SELECT test_1 as test, test_name FROM Evaluation e
join Diagnostics di on e.test_1 = di.test_id
UNION ALL
SELECT test_2 as test, test_name FROM Evaluation e
join Diagnostics di on e.test_2 = di.test_id
UNION ALL
SELECT test_3 as test, test_name FROM Evaluation e
join Diagnostics di on e.test_3 = di.test_id
) d
GROUP BY test, test_name
HAVING COUNT(*) > 2
ORDER BY test [or test_name if preferred]
Обратите внимание, что каждый выбор в UNION полностью независим от других.