【发布时间】:2013-12-03 19:32:41
【问题描述】:
我一直在寻找解决方案,但我就是不知道如何设置它。
我有一张名为“cals”的表。它包含一个名为“rep_code”的列。其中包含一个标识 cal 的特定值,即。 “EFM”、“LM”等。“cals”记录列表通过“well_id”链接到井,“well_id”是另一个名为“wells”的表上的索引器。现在,wells 表中的每条记录都由“run_id”链接,它是另一个名为“runs”的表上的索引器。
威尔斯表:
Indexer | run_id
1 | 5
2 | 3
3 | 5
4 | 2
cals 表:
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”
基本上,我认为我需要做的是“将 wells 加入 cals 添加 run_id where well_id = $well_id from run list”...我想,每次我读到这个我都会有点困惑。我是“加入”的新手,所以我很抱歉。
我已经设法将这段代码放在一起,以计算对一口井有效的每一次出现,但似乎无法将其全部放入运行中的所有井的功能语句中。
$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'";
我希望我已经解释得足够清楚了。
【问题讨论】:
-
如果你把表结构放在一起会有所帮助,这样我们就可以看到你正在谈论的连接。
-
感谢 Jorge,但是,我需要将 run_id 合并到 cals 表上的 well_id 列中(请参阅我的加入编辑)。我一直在尝试很多事情。看起来应该很简单...