2012-12-15 36 views
1

我有EXPERIMENTAL_RUNS(runId),其中每个都有任何数量的与其关联的传感器(sensorId)。考虑到这一点,我有一个RS表加入二:选择至少有一个功能列表的所有行

========== 
RS 
========== 
runId, sensorId 

因此,如果与运行的runid = 1曾与sensorId = 1,sensorId = 6,sensorId = 8在它的传感器,将有3项在RS表: (指定runid = 1,sensorId = 1) (指定runid = 1,sensorId = 6) (指定runid = 1,sensorId = 8)

这真的是我怎么会返回所有EXPERIMENTAL_RUNS有传感器{11,13,15}?从我读过的内容来看,我似乎想要的是一个嵌套的哈希连接...这是会发生什么?

SELECT a.runId 
FROM rs a, rs b, rs c 
WHERE 
a.runId=b.runId AND 
b.runId=c.runId AND 
a.sensorId=11 AND 
a.sensorId=13 AND 
b.sensorId=15 

为了澄清,我只想返回有传感器11和13和15

+0

MySQL没有散列连接。但是你发布的查询应该会给你你想要的结果。 –

回答

3

假设runId, sensorId是唯一在rs表,这会发现runId S作所有3 sensorId的EXPERIMENTAL_RUNS s:

SELECT runId, COUNT(c) ct 
FROM rs 
WHERE sensorId IN (11, 13, 15) 
GROUP BY runId 
HAVING ct = 3 
相关问题