phpMyAdmin: объедините три столбца, посчитайте, сколько раз существует каждое значение, и отобразите PK, на который ссылается каждый

0

У меня есть несколько таблиц с двумя из них: 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, поэтому любая помощь будет замечательной!

  • 0
    Надеюсь, вы попытаетесь найти ответ здесь. Самое время прочитать « Как спросить» . Прочитайте это и отредактируйте ответ. Тогда вы можете получить лучшие ответы. также посмотрите на [этот вопрос] ( stackoverflow.com/questions/1908118/… ), который правильно описан с примерами данных.,
  • 0
    Чтобы искать внешние ключи, вам нужно использовать соединение.
Показать ещё 2 комментария
Теги:
phpmyadmin

1 ответ

0
Лучший ответ

Попробуй это:

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 полностью независим от других.

  • 0
    Это сработало отлично! Спасибо вам большое!
  • 0
    Благодарю. В другой раз я бы посоветовал вам не использовать тег phpmyadmin, так как это простой вопрос SQL, и вы могли бы легко исключить потенциальных ответчиков из рассмотрения вопроса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню