SELECT *
FROM (
SELECT sid, qid as qid1, i as i1, i2, qg1, qg2, a.qg3, a.qg4, (i-qid) as diag, a.diag2
FROM qgram
INNER JOIN (
SELECT qid, qg1, qg2
FROM query
INNER JOIN (
SELECT qg1, qg2
FROM p3pairs)
as p1
ON query.qg = p1.qg1)
as p2
ON qgram.qg = qg2
INNER JOIN (
SELECT sid as sid2, qid as qid2, i as i2, (i-qid) as diag2, qg1 as qg3, qg2 as qg4
FROM qgram
INNER JOIN (
SELECT qid, qg1, qg2
FROM query
INNER JOIN (
SELECT qg1, qg2
FROM p3pairs)
as p3
ON query.qg = p3.qg2)
as p4 ON qgram.qg = qg1)
as a
ON sid = sid2)
as b
where b.diag = b.diag2
AND (i2-i1) > 2
AND (i2-i1) < 43;