Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Uso de IF THEN al relacionar tablas

Estas en el tema de Uso de IF THEN al relacionar tablas en el foro de Mysql en Foros del Web. Hola, estoy intentando resolver un problema que no logro resolver ya que contiene muchas tablas vinculadas. Para que se entienda la idea pondré un ejemplo ...
  #1 (permalink)  
Antiguo 06/02/2007, 18:23
 
Fecha de Ingreso: diciembre-2003
Mensajes: 19
Antigüedad: 20 años, 4 meses
Puntos: 0
Uso de IF THEN al relacionar tablas

Hola, estoy intentando resolver un problema que no logro resolver ya que contiene muchas tablas vinculadas.
Para que se entienda la idea pondré un ejemplo simple pero que explica la situación:
Tengo una tabla libros, otra autores, otra tematicas, otra editoriales...

Tabla LIBROS
-------------
id
titulo
autor ---> id de tabla autores
tematicas ---> id de tabla tematicas
editorial --->id de tabla editorial

Tabla AUTORES
---------------
id
autor

Tabla TEMATICAS
-----------------
id
tema

Tabla EDITORIALES
------------------
id
editorial


Cuando genero una busqueda voy agregando sentencias where y campos a la consulta sql segun los filtros al rellenar el formulario de busqueda, pero si no completo ningun filtro y quiero mostrar todos no me aparecen los que por ejemplo aun no tienen el campo editorial completo.
Desde la aplicación se requiere para completar la entrada pero el problema me viene ya que se entan introduciendo datos de otras bdd que no todas estan completas.

SQL para relacionar las tablas y devolver todos los resultados:

SELECT libros.titulo,autores.autor,tematicas.tema,editori ales.editorial
FROM libros,autores,tematicas,editoriales
WHERE
libros.autor=autores.id
AND libros.tematicas=tematicas.id
AND libros.editorial=editoriales.id

(en el where hago la asociacion de tablas)
si estuvieran completos todos los campos me daria algo como:

TITULO | AUTOR | TEMA | EDITORIAL
----------------------------------------------------------
Lo que sea | Juan Perez | Comedia | Centauro
Otro libro | Manolo Garcia | Drama | Planeta
Incompleto | Luis Mendez | NULL | Centauro

El 3er libro no tiene introducido el tema del libro, por lo tanto seria un NULL, pero como en la asociacion de tablas pongo que:

libros.tematicas=tematicas.id <--- y esto no existe para este libro pues no me devuele el esta fila.

He intentado utilizar IF THEN ELSE para cada una de las asociaciones pero no he sacado nada en limpio.
Como seguro que esto tiene solucion pero no doy con ella por mucho manual que me lea, a ver si alguien me indica un poco el camino a seguir

Gracias
  #2 (permalink)  
Antiguo 07/02/2007, 12:50
Avatar de deadlykyo  
Fecha de Ingreso: noviembre-2005
Ubicación: Cbba - Bolivia
Mensajes: 747
Antigüedad: 18 años, 5 meses
Puntos: 5
Re: Uso de IF THEN al relacionar tablas

Creo que lo que necesitas es hacer uso de JOINS (LEFT JOIN o RIGHT JOIN) en tu consulta en vez de esto:
Código PHP:
libros.autor=autores.id
AND libros.tematicas=tematicas.id
AND libros.editorial=editoriales.id 
para que asi obtengas el resultado que estas buscando, para una mejor explicacion te dejo un enlace a un articulo sobre el uso de estos JOINS
http://www.mysql-hispano.org/page.php?id=31&pag=9
espero te sirva, cya
__________________
"El Conocimiento es de todos, no solo de algunos"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:22.