Är inte en INNER JOIN (eller helt enkelt JOIN) korsningen du behöver? Förutsatt att du gör sammanfogningen över de relevanta vanliga kolumnerna.
Därför:
SELECT s1.id
FROM (SELECT id
FROM subject_attribute
WHERE attribute = 'des_sen'
AND numerical_value >= 2.0
) AS s1
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'tough'
AND numerical_value >= 3.5
) AS s2
ON s1.id = s2.id
Detta sträcker sig till N frågor (N> 2) rent och linjärt.
SELECT s1.id
FROM (SELECT id
FROM subject_attribute
WHERE attribute = 'des_sen'
AND numerical_value >= 2.0
) AS s1
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'tough'
AND numerical_value >= 3.5
) AS s2
ON s1.id = s2.id
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'though'
AND numerical_value = 14
) AS s3
ON s1.id = s3.id
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'through'
AND numerical_value != 45
) AS s4
ON s1.id = s4.id
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'plough'
AND numerical_value < 9
) AS s5
ON s1.id = s5.id
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'cough'
AND numerical_value < 5
) AS s6
ON s1.id = s6.id
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'bucolic'
AND numerical_value >= 3.5
) AS s7
ON s1.id = s7.id
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'set'
AND numerical_value BETWEEN 0.23 AND 3.0
) AS s8
ON s1.id = s8.id
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'intelligent'
AND numerical_value >= 0.001
) AS s9
ON s1.id = s9.id
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'anal-retentive'
AND numerical_value < 7
) AS s10
ON s1.id = s10.id
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'magnificent'
AND numerical_value = 35
) AS s11
ON s1.id = s11.id
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'quantum'
AND numerical_value >= 55
) AS s12
ON s1.id = s12.id
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'thoughtfulness'
AND numerical_value >= 350.237
) AS s13
ON s1.id = s13.id
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'calamity'
AND numerical_value = 3.0
) AS s14
ON s1.id = s14.id
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'pink'
AND numerical_value > 0.5
) AS s15
ON s1.id = s15.id
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'cornucopia'
AND numerical_value BETWEEN 1 AND 12
) AS s16
ON s1.id = s16.id
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'maudlin'
AND numerical_value < 3.625
) AS s17
ON s1.id = s17.id
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'triad'
AND numerical_value >= 1.723
) AS s18
ON s1.id = s18.id
JOIN (SELECT id
FROM subject_attribute
WHERE attribute = 'ambient'
AND numerical_value >= 3.1
) AS s19
ON s1.id = s19.id