版本:mySQLi PHP 5.4.45

我正在尝试计算每个唯一ID的面板数。相反,我得到每个ID的测试总数。

查询前:(示例)

eReq | panel_name | test
------------------------
 500 | tox        | Butabital
 500 | tox        | Amphetamine
 500 | tox        | MethAmp
 500 | chem       | CBC
 600 | tox        | Morphine
 600 | chem       | CBC


查询:

SELECT panel_name, count(*)
FROM `ordered_codes`
JOIN samples ON ordered_codes.tox_id = samples.tox_id
JOIN orders_codes ON ordered_codes.code_id = orders_codes.id
GROUP BY panel_name


当前结果:

   panel_name | Count(*)
   ---------------------
   tox        | 4
   chem       | 2


所需的结果:(数字应该低一些-用eReq计算panel_name)

panel_name | Count(*)
---------------------
tox        | 2
chem       | 2


我觉得这很简单,在这一点上我只是想得太多。

最佳答案

您在寻找count(distinct)吗?

SELECT panel_name, count(distinct ereq)
FROM ordered_codes oc JOIN
     samples s
     ON oc.tox_id = s.tox_id
GROUP BY panel_name


我不明白为什么要对ordered_codes进行两次连接,所以我删除了第二个,假设它是一个错字。您的查询将生成语法错误。

关于php - 计算每个不同ID的不同值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51469258/

10-11 05:51