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

Consulta con 2 Tablas

Estas en el tema de Consulta con 2 Tablas en el foro de Mysql en Foros del Web. Hola a todos !! Estoy haciendo un trabajilo y me van apareciendo dudas... Una de ellas es esta: Con las siguientes tablas: * EMPLEADO{ + ...
  #1 (permalink)  
Antiguo 19/01/2013, 06:03
 
Fecha de Ingreso: noviembre-2012
Mensajes: 84
Antigüedad: 11 años, 4 meses
Puntos: 5
Pregunta Consulta con 2 Tablas

Hola a todos !! Estoy haciendo un trabajilo y me van apareciendo dudas...
Una de ellas es esta:

Con las siguientes tablas:

* EMPLEADO{
+ CODIGO;
+ NOMBRE;
+ LOCALIDAD;
}

* DEPARTAMENTO{
+ CODIGO;
+ CODIGO_EMPL_normal; //CLAVE AJENA DE EMPLEADO
+ CODIGO_EMPL_jefe;// CLAVE AJENA DE EMPLEADO
}

La cuestión es que quiero sacar los datos de empleado que están en un departamento como jefe. TENGO EL CÓDIGO DE EMPLEADO NORMAL (COD_NOR), que me llega en una función.

Esta es la consulta con la que he estado probando:
"SELECT A.CODIGO, A.NOMBRE, A.LOCALIDAD FROM EMPLEADO A, DEPARTAMENTO D WHERE D.DEPARTAMENTO='" +COD_NOR+ "' ";
Pero no fuinciona...


Sé que es un poco lioso por la forma en que lo he explicado...
Bueno gracias a todos de Antemano!!
Un Saludo"
  #2 (permalink)  
Antiguo 19/01/2013, 06:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Consulta con 2 Tablas

No estás relacionando al empleado con el departamento. Al menos no correctamente.
Cuando haces un JOIN implícito (la coma), la base de datos intenta emparejar aquellos campos que tienen el mismo nombre, pero en tu caso el campo "codigo" en empleados es el ID del empleado, mientras que "codigo" en Departamentos es el ID del departamento.
En definitiva está dando cualquier cosa.

En el JOIN tienes que explicitar qué campo de la primera lo cruzas con cuál de la segunda, o de lo contrario no tendrás resultados correctos.
Código MySQL:
Ver original
  1.     A.CODIGO,  
  2.     A.NOMBRE,  
  3.     A.LOCALIDAD
  4. FROM  
  5.     EMPLEADO A INNER JOIN DEPARTAMENTO D  ON A.codigo = D.CODIGO_EMPL_jefe
  6.     D.DEPARTAMENTO=IdBuscado;

Consejo: Nunca uses una palabra simple como ID, CODIGO, COD, NUMCOD o cosa semejante como nombre de un campo. Debes ponerle como refijo el nombre de la tabla, y usar ese mismo nombre para la FK que generes. Eso te facilitará realizar las consultas y entender cómo establecer las relaciones
Esto es, las tablas deberían tener esta forma:
Cita:
EMPLEADO(EMPL_CODIGO, EMPL_NOMBRE, EMPL_ LOCALIDAD)

DEPARTAMENTO(DPTO_CODIGO, EMPL_CODIGO, EMPL_CODIGO_JEFE)
Es una forma habitual de buenas practicas de desarrollo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 19/01/2013, 06:44
 
Fecha de Ingreso: noviembre-2012
Mensajes: 84
Antigüedad: 11 años, 4 meses
Puntos: 5
Respuesta: Consulta con 2 Tablas

Perfecto!!!
Ahora sii
Gracias tendré en cuenta el "JOIN"

Etiquetas: select, tabla, tablas
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 19:02.