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

Como crear una vista cuando una llave foránea es cero?

Estas en el tema de Como crear una vista cuando una llave foránea es cero? en el foro de Mysql en Foros del Web. Hola otra ves. Pues mi pregunta es si alguien sabe como hacer una vista en donde si se tiene una llave foranea con valor = ...
  #1 (permalink)  
Antiguo 21/09/2011, 16:31
Avatar de exception  
Fecha de Ingreso: septiembre-2011
Mensajes: 12
Antigüedad: 13 años, 2 meses
Puntos: 0
Busqueda Como crear una vista cuando una llave foránea es cero?

Hola otra ves.
Pues mi pregunta es si alguien sabe como hacer una vista en donde si se tiene una llave foranea con valor = 0 (el cual no existe), la vista me regresara valores predefinidos o algo asi...
Aver me explico....

digamos que tenemos las tablas:

Código HTML:
Ver original
  1. USUARIO
  2. id_suauario, nombre, apellidos, edad, id_expediente
  3.  
  4.   EXPEDIENTE
  5. id_expediente, fecha_alta, autorizacion, fotografia
  6.  
  7.   VISTA
  8. SELECT id_suauario, nombre, apellidos, edad, id_expediente, fecha_alta, autorizacion, fotografia
  9. FROM USUARIO, EXPEDIENTE
  10. WHERE USUARIO.id_expediente = EXPEDIENTE.id_expediente;

El concepto es que no todos los usuarios tienen expediente y por lo tanto en el campo id_expedeinte tendrían un valor = 0 los que no tienen expediente.

Pero si creo una vista para estas dos tablas todos los usuarios que no tengan expediente no se ven en la vista.

Una 'solución' seria poner en expediente un registro con id_expediente =0 y los demás valores en null pero no lo veo como algo correcto.

¿¿Como me sugieren crear la vista para cuando el id_expediente = 0 ???
  #2 (permalink)  
Antiguo 21/09/2011, 18:17
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Como crear una vista cuando una llave foránea es cero?

Para esos casos no puedes usar la coma, sino LEFT JOIN.
Código MySQL:
Ver original
  1.     id_suauario,
  2.     nombre,
  3.     apellidos,
  4.     edad,
  5.     id_expediente,
  6.     fecha_alta,
  7.     autorizacion,
  8.     fotografia
  9. FROM USUARIO U LEFT JOIN EXPEDIENTE E ON U.id_expediente = E.id_expediente;
Pero como esto devolverá NULL en donde no existan coincidencias, es mejor administrar esa salida para que no aparezcan en la tabla:
Código MySQL:
Ver original
  1.     id_suauario,
  2.     nombre,
  3.     apellidos,
  4.     edad,
  5.     IFNULL(id_expediente, '') id_expediente,
  6.     IFNULL(fecha_alta, '') fecha_alta,
  7.     IFNULL(autorizacion, '') autorizacion,
  8.     IFNULL(fotografia, '') fotografia
  9. FROM USUARIO U LEFT JOIN EXPEDIENTE E ON U.id_expediente = E.id_expediente;
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: cero, encontrado, llave, vistas, foreignkey
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 12:47.