Código SQL
[-]
SELECT I.*, T.*, Z.*, AI.*
FROM informes I
left outer join temainforme ON (informes.idtema = temainforme.idtema and T.idtemainf like '%lo que se ingreso%')
left outer join zonainf ON (informes.idzona = zonainf.idzona and zonainf.idzonainf like '%lo que se ingreso%')
left outer join autoresxinforme ON (informes.idinforme = autoresxinforme.idinforme)
WHERE I.anio = 'anio que se ingreso'
Cita:
autoresxinforme.idinforme = (SELECT autoresxinforme.idinforme FROM autoresxinforme where autoresxinforme.idautor = autor.idautor)
|
Esto no tengo la más mínima idea de para que te serviría, no se que haga o para que sirva si el enlace de esta tabla ya lo estas haciendo arriba con el join.
Lo otro que no me gusta es poner * para traerte todos los campos, es mucho mejor que pongas los nombres de los campos y traer solamente los que necesites.
Ahora bien, esa consulta le está dando prioridad a los informes y al ser con "inner join" todos los datos deben coincidir en todas las tablas. Aquí es donde creo yo que no esta funcionando. intenta cambiar el inner join por un "left outer join" y explica un poco más sobre a que dato le vas a dar más prioridad. ¿a los autores o a los informes?