我一直在寻找解决方案,但我就是不知道如何设置它。
我有一个名为“cals”的表。它包含一个名为“rep_code”的列。其中包含标识 cal 的特定值,即。 “EFM”、“LM”等。“cals”记录列表通过“well_id”链接到井,“well_id”是另一个称为“wells”的表上的索引器。现在,wells 表中的每条记录都通过“run_id”链接,“run_id”是另一个名为“runs”的表上的索引器。
威尔斯表:
Indexer | run_id
1 | 5
2 | 3
3 | 5
4 | 2
热量表:
Indexer | well_id | rep_code
1 | 3 | LM
2 | 4 | EFM
3 | 1 | LM
4 | 3 | EFM
现在,当我查看运行列表时,我想显示运行中“rep_code”下具有“EFM”的报告总数,以及“LM”代码的总数等。因此在运行列表中, ID 为 5 的运行应该表示总共 2 个“LM”报告和 1 个“EFM”。运行编号 2 应该只有 1 个“EFM”和 0 个“LM”
基本上,我认为我需要做的是“将井加入到cals中,添加run_id,其中well_id =来自运行列表的$well_id”...我想,每次我读到这篇文章时我都会有点困惑。我是新来“加入”的,所以我很抱歉。
我已经设法将这段代码放在一起来计算适用于一个井的每次出现,但似乎无法将我的头脑集中在将其全部放入运行中所有井的功能语句中。
$sql = "SELECT
COUNT(CASE WHEN rep_code='LM' THEN 1 END) AS LM_tot,
COUNT(CASE WHEN rep_code='EFM' THEN 1 END) AS EFM_tot,
COUNT(CASE WHEN rep_code='GM' THEN 1 END) AS GM_tot
FROM cals WHERE well_id = '$well_id'";
$query = @mysql_query($sql);
$result = @mysql_fetch_array($query);
$LM_tot = $result['LM_tot'];
$EFM_tot = $result['EFM_tot'];
$GM_tot = $result['GM_tot'];
我也开始了这个加入,但我还没有让它发挥作用。
sql = "SELECT
COUNT(CASE WHEN rep_code='LM' THEN 1 END) AS LM_tot,
COUNT(CASE WHEN rep_code='EFM' THEN 1 END) AS EFM_tot,
COUNT(CASE WHEN rep_code='GM' THEN 1 END) AS GM_tot
FROM cals, wells INNER JOIN wells ON cals.well_id = wells.indexer
WHERE run_id = '$run_id'";
我希望我已经解释得足够清楚了。
最佳答案
把你正在谈论的连接分开,让你的查询工作,你只需要改变一点:
$sql = "SELECT
SUM(CASE WHEN rep_code='LM' THEN 1 ELSE 0 END) AS LM_tot,
SUM(CASE WHEN rep_code='EFM' THEN 1 ELSE 0 END) AS EFM_tot,
SUM(CASE WHEN rep_code='GM' THEN 1 ELSE 0 END) AS GM_tot
FROM cals
INNER JOIN
wells ON cals.well_id = wells.indexer
WHERE cals.well_id = '$well_id'";
如果需要添加更多内容,请使用表结构更新您的问题并添加一些示例数据和所需的结果,然后我将更新我的答案。
关于PHP MySQL 多重计数连接加法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20360004/