Tema: Inner Join
Ver Mensaje Individual
  #5 (permalink)  
Antiguo 25/10/2013, 11:49
gemeli16
 
Fecha de Ingreso: octubre-2013
Mensajes: 30
Antigüedad: 10 años, 5 meses
Puntos: 0
Respuesta: Inner Join

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Vamos por partes:
1) No existen repeticiones desde el punto de vista de bases de datos. Repeticiones se dan cuando todos los campos devueltos en la consulta, en cada registro son iguales entre dos registros dados. En tu caso debe estar "repitiendo" algunos datos de algunas columnas, pero eso sólo significa que se trata de tablas relacionadas en cardinalidad 1:N o N:N, y se repiten N veces los registros de al menos una tabla... tantas como registros relacionados hay.
2) Yo de dije que luego de quitarlo verificaras visualmente, es decir que buscaras visualmente el que estás indicando en ese WHERE. La idea es que te dieras cuenta que no había ninguno que cumpliera la condición "ClaveEmpleado='1000'".
¿Se entiende?
Un INNER JOIN devolverá datos si se cumplen todos los INNER JOIN al mismo tiempo, y en el caso de existir condiciones en el WHERE, de los que devuelve el JOIN, sólo los que las cumplen.
Desde el momento en que no da error, entonces lo que tienes son condiciones que no se cumplen en tu consulta.
Tan simple y sencillo como eso.

Ok, si yo quito la condición sigue sin aparecer registros a menos que yo quite la relación de las tablas que quedaría asi:

SELECT area.Nombre AS area, NomPuesto, NombreNivel, IdEmp, ClaveEmpleado, empleado.Nombre, APaterno, AMaterno, empleado.IdArea, empleado.IdPuesto, empleado.IdNivel, Usuario, Contrasena, Email, Foto
FROM empleado, area, puesto, niveldeacceso

de esta forma me da un resultado de los registros que están en cada una de las tablas pero sin forma (No tienen relación a lo que debería tener) y si dejo la consulta quitando la condición

asi

SELECT area.Nombre as area, NomPuesto, NombreNivel, IdEmp, ClaveEmpleado, empleado.Nombre, APaterno, AMaterno, empleado.IdArea, empleado.IdPuesto, empleado.IdNivel, Usuario, Contrasena, Email, Foto
FROM empleado
INNER JOIN area ON area.IdArea=empleado.IdArea
INNER JOIN puesto ON empleado.IdPuesto=puesto.IdPuesto
INNER JOIN niveldeacceso ON empleado.IdNivel=niveldeacceso.IdNivel

sigue sin darme datos, pero no muestra error

al igual que la condición que estoy buscando si existe, No se si estoy haciendo algo mal y lo realice de las dos formas que muestro al principio.