PHP MySQL 多重计数连接加法

标签 php mysql join count

我一直在寻找解决方案,但我就是不知道如何设置它。

我有一个名为“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/

相关文章:

mysql - 如何在netbeans中创建自动化的mysql脚本

mysql select for simple join for rows having certain cells with duplicate values

MySql语句根据中间表中的列进行选择

java - Android Studio 错误 org.apache.http.conn.HttpHostConnectException : Connection to http://10. 0.2.2:8080 拒绝

javascript - jquery 中追加元素

php - 基于下拉菜单选择的 SQL 查询

mysql - 使用 WHERE EXISTS 条件时的性能问题

php - 按颜色排序

php - 如果 wordpress 的主页 css

r data.table 函数包装器围绕临时连接(在链中聚合)