【发布时间】:2012-03-06 05:22:01
【问题描述】:
我在 MySQL 中有两个表,我将它们与以下属性进行比较:
tbl_fac : facility_id, chemical_id, criteria
10 , 25 , 50
10 , 26 , 60
10 , 27 , 60
11 , 25 , 30
11 , 27 , 31
etc...
tbl_samp: sample_id, chemical_id, result
5 , 25 , 51
5 , 26 , 61
6 , 25 , 51
6 , 26 , 61
6 , 27 , 500
etc....
这些表是由chemical_id(多对多----呃)连接的,有几千个facility_id,每个facility_id 有几百个chemic_id。还有几千个sample_id,每个sample_id 都有几百个chemic_id。总而言之,tbl_fac 中有大约 500,000 条记录,tbl_samp 中有 1,000,000 多条记录。
我正在尝试从该数据集中提取三组 sample_id:
第 1 组:任何 sample_id,其中 tbl_samp.result > tbl_fac.criteria(即结果超出标准)
第 2 组:tbl_samp.result
第 3 组:tbl_samp.result
问题来了:如何在一个查询中有效地获取所有三个组?
我试过了:
select *
from tbl_fac
left join tbl_samp
on tbl_fac.chemical_id = tbl_samp.chemical_id
但这只会产生整个数据集(而不是单个样本)缺失的值。我有一个 hackish 查询,它使用第三个表来连接 tbl_fac 和 tbl_samp,但它太丑了,我实际上很尴尬地发布它......
与往常一样,非常感谢您对此的想法!
干杯,
乔什
编辑:理想情况下,我希望返回 sample_id 和 Group - 每个样本 ID 只有一个 Group(我对数据的了解表明它们将始终属于上述三个类别之一)。
【问题讨论】:
-
您想退回什么?带有
sample_id和某种group_it_belongs_to列的表? -
是的——完全正确。刚刚更新它以反映您的评论。谢谢!
标签: mysql group-by missing-data