SQL - AYUDA, POR DIOS

 
Vista:

AYUDA, POR DIOS

Publicado por Victor (16 intervenciones) el 09/04/2014 17:11:48
Hola a todos

Tengo un problema que seguramente sea una tonteria, pero estoy bloqueado.
Tengo la siguiente estructura

Tabla Personal
Numero
Nombre
Apellidos
IDFuncion (Long)
IDDepartamento (Long)

Tabla Funciones
ID (Long)
Descripcion

Tabla Departamentos
ID (Long)
Descripcion

El campo Personal.IDFuncion esta relacionado con la tabla Funciones con el campo Funciones.ID
El campo Personal.IDDepartamento esta relacionado con la tabla Departamentos con el campo Departamentos.ID

Necesito una consulta sql de access que me de los siguientes datos:
Personal.Nombre, Funciones.Descripcion, Departamentos.Descripcion

SELECT Personal.Nombre, Funciones.Descripcion, Departamentos.Descripcion FROM Personal, Funciones, Departamentos WHERE Funciones.ID=Personal.IDFuncion AND Departamentos.ID=Personal.IDDepartamento

El problema viene cuando una personal no tiene definido ninguna funcion o ningun departamento, es decir, los valores IDFuncion y IDDepartamento son igual a 0

Un saludo y gracias por todo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

AYUDA, POR DIOS

Publicado por leonardo_josue (1173 intervenciones) el 09/04/2014 18:13:31
Hola Victor...

No me quedó exactamente claro cual es el problema, pues a pesar de que colocas las estructuras de tus tablas no nos colocas datos de ejemplo... sin embargo, por lo que describes, el problema está en que tú como muchos otros programadores, parece desconocer el uso de los JOIN's...

Como algo de cultura general, puedes preguntarle a Santa Wikipedia que te diga cómo trabajan los JOIN's...

http://es.wikipedia.org/wiki/Join

En tu caso, dado que el problema parece radicar en que hay registros en tu tabla personal que no tiene una entrada en funciones y/o departamentos, lo adecuado es el uso del LEFT JOIN... Hay un pequeño (o gran) problema, y es que Access no puede definirse como un verdadero DBMS por muchos motivos, y la sintaxis del JOIN es distinta a la del SQL Estándar, ya que debes hacer uso de Paréntesis, ya que sólo permite hacer JOIN'S entre dos tablas. Te paso algunas páginas de ejemplo del uso de multiples LEFT JOIN's.

http://nm1m.blogspot.mx/2007/10/multiple-left-joins-in-ms-access.html
http://stackoverflow.com/questions/8581838/multiple-left-join-in-access
http://www.developerfusion.com/thread/21452/left-join-on-multiple-tables-resolved/

Saludos
Leo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

AYUDA, POR DIOS

Publicado por Victor (16 intervenciones) el 10/04/2014 00:57:10
Gracias Leo. Me ha costado un poco, ya que la consulta era un poco compleja, pero lo he conseguido.

Un saludo y gracias por todo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 135
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

AYUDA, POR DIOS

Publicado por xve (284 intervenciones) el 10/04/2014 09:04:00
Hola Victor, nos puedes compartir como ha quedado la consulta?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

AYUDA, POR DIOS

Publicado por Victor (16 intervenciones) el 10/04/2014 22:13:49
Hola a todos

La estructura de tablas de las que os hablé, estaba un poco simplificada, para que fuera más fácil de explicar. Con esa estructura, la consulta sería la siguiente:

SELECT Personal.Nombre, Funciones.Descripcion, Departamentos.Descripcion FROM ((Personal LEFT JOIN Funciones ON Personal.IDFuncion=Funciones.ID) LEFT JOIN Departamentos ON Personal.IDDepartamento=Departamentos.ID)

En este ejemplo se anidan dos sentencias LEFT JOIN, es decir, asociamos la tabla Personal con la tabla Funciones y con la tabla Departamentos.

Espero que os sirva.

Un saludo y gracias por todo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 135
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

AYUDA, POR DIOS

Publicado por xve (284 intervenciones) el 11/04/2014 07:45:21
Hola Victor, muchas gracias por compartirlo!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar