2012-12-15 42 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 
相關問題