我需要在我的数据库上查询一些表,为此我必须使用一些嵌套查询。这是一个效果不佳的人:
SELECT *
FROM inserzioni
WHERE inserzioni.idComune
IN (
SELECT tcomuni.IDCOMUNE
FROM tcomuni, tprovince
WHERE tcomuni.IDPROVINCIA
IN (
SELECT tprovince.IDPROVINCIA
FROM tprovince
WHERE tprovince.IDREGIONE = '20'
)
)
AND inserzioni.idProdAcq
IN (
SELECT prodacq.idPa
FROM prodacq
WHERE DATEDIFF( NOW( ) , prodacq.dataInizio ) < prodacq.durata
AND prodacq.f_attivo =1
)
GROUP BY inserzioni.idInserzione
问题出现在最后一个巢中。在结果表中,我看到一条记录不应该在那里,因为此记录的idProdAcq不再在prodacq表中。有什么我想念的吗?
答案 0 :(得分:0)
您使用INNER JOIN
SELECT i.*
FROM inserzioni i
JOIN tcomuni t ON i.idComune = t.IDCOMUNE
JOIN tprovince tp ON t.IDPROVINCIA = tp.IDPROVINCIA
AND tp.IDREGIONE = '20'
JOIN prodacq p ON i.idProdAcq = p.idPa
AND DATEDIFF( NOW( ) , p.dataInizio ) < p.durata
AND p.f_attivo =1
GROUP BY i.idInserzione;