FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Consulta relacionando 5 tablas...
Hola, tengo que hacer la siguiente consulta y la verdad ya me di por vencida, hace dos dias q vengo intentando y no le encuentro la forma. Tengo una base de datos para una biblioteca, y las siguientes tablas
Informes: id_informe, titulo, anio, id_tema, id_zona, etc... Temas: id_tema, tema Zonas: id_zona, zonas luego cada informe puede tener mas de un autor Autores: id_autor, apellido, nombre, institucion Autoresxinformes: id_informe, idautor En el formulario de busqueda, ingresan el apellio del autor, un tema determinado, una zona y un anio (asi lo quiere mi jefe). Intente con esta consulta, la verdad agradeceria mucho su ayuda, porq nose como hacerla: el tema y la zona estan en un dbloockupcombo el año y el apellido del autor se ingresa a mano (el apellido del autor tambien lo podria poner en un dblookupcombo). Desde ya muchas gracias. ALE Última edición por ecfisa fecha: 05-07-2011 a las 02:39:52. Razón: ETIQUETAS [SQL] [/SQL] |
#2
|
||||
|
||||
Cita:
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?
__________________
|
#3
|
|||
|
|||
Hola Contra Veneno, funciono! muchisimas gracias!
en el zquery de delphi quedo asi: SELECT informes.*, temainforme.*, zonainf.*, autoresxinforme.* FROM informes LEFT OUTER JOIN temainforme ON (informes.idtema = temainforme.idtemainf) AND (temainforme.idtemainf like concat('%',:idtema,'%')) LEFT OUTER JOIN zonainf ON (informes.idzonainf = zonainf.idzonainf) AND (zonainf.idzonainf like concat('%',:idzona,'%')) LEFT OUTER JOIN autoresxinforme ON (informes.idinforme = autoresxinforme.idinforme) AND (autoresxinforme.idautorext like concat('%',:idautor,'%')) WHERE informes.anioinforme like concat('%', :anio,'%') al activar el formulario pongo los valores en cadena vacia asi me muestra todos los informes. Le doy prioridad a los informes, el usuario ingresa para buscar un informe determinado, ya sea por autor o por tema o por zona o por año o por cualquiera de esas conbinaciones. El ultimo select lo habia puesto porq el id de autor lo saco de la tabla autores y con ese id voy a la tabla autores por informes, ya que el usuario ingresa un apellido. Muchas Gracias!!! no sabes como me has ayudado! ALE |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Consulta Tablas - DB | othaheguy | Varios | 16 | 13-04-2010 13:25:31 |
error relacionando de TADOQuerys | zajoma | SQL | 1 | 27-12-2006 21:37:02 |
Usar DELETE relacionando 2 tablas | Rakelina | SQL | 5 | 22-05-2004 16:01:57 |
Consulta SQL con 4 tablas | nefy | SQL | 2 | 03-05-2004 23:25:22 |
Informe relacionando dos tablas mediante MasterFields | heavy_horse | Impresión | 3 | 16-08-2003 03:42:20 |
|