phpmyadmin:连接三列,计算每个值存在的次数,并显示每个值引用的pk

f5emj3cl  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(259)

我有许多表,其中两个是诊断(test\u id,test\u name)和评估(evaluation\u id,test\u 1,test\u 2,test\u 3)。测试\u 1、2、3是引用diagnostics.test \u id的外键。我需要计算每个测试的管理次数(跨所有3个测试列),只显示已管理3次或以上的测试,并给出相应的测试\u名称。
我当前的查询是:

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上比较新,所以任何帮助都太好了!

tzcvj98z

tzcvj98z1#

试试这个:

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]

请注意,联合中的每个选择都是完全独立于其他选择的。

相关问题