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

Consultar de 3 tablas

Estas en el tema de Consultar de 3 tablas en el foro de Mysql en Foros del Web. Hola Chicos, Debe ser para uds. algo totalmente trivial, pero la verdad es que para mi no =D Sucede que tengo 6 tablas, Alum_Datos, Alum_Direc, ...
  #1 (permalink)  
Antiguo 06/08/2010, 14:19
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años
Puntos: 65
Consultar de 3 tablas

Hola Chicos,

Debe ser para uds. algo totalmente trivial, pero la verdad es que para mi no =D

Sucede que tengo 6 tablas, Alum_Datos, Alum_Direc, Alum_Tutor, Catalogo_Carrera, Catalogo_Estados, Catalogo_Municipio, con datos de mis alumnos. Lo que necesito es consultar de acuerdo a su matricula, eso ya lo tengo, lo que me viene trabando las ideas es como sustituir la clave foranea del Estado, Municipio y Carrera en la consulta.



La consulta mostrandome los datos es esta, y funciona bien:

Código:
SELECT a.Alum_AP,a.Alum_AM,a.Alum_Nombre,
       d.Alum_Calle,d.Alum_No, d.Alum_Colonia,
       d.Alum_CP, d.Id_Municipio, d.Id_Estado,
       d.Alum_Pais, a.Alum_Tel_Casa, a.Alum_Tel_Cel,
       a.Alum_Fecha_Nac, a.Alum_Lugar_Nac, a.Alum_Sexo,
       a.Alum_No_Solicitud,a.Alum_Puntaje_obt,
       a.Id_Carrera,
       t.Tutor_AP, t.Tutor_AM, t.Tutor_Nombre,
       t.Tutor_Calle, t.Tutor_Numero, t.Tutor_Colonia,
       t.Id_Municipio, t.Id_Estado, t.Tutor_Tel_Casa,
       t.Tutor_Tel_Cel
FROM alumno_datos a, alumno_direc d, alumno_tutor t 
WHERE a.Id_Alumno = '20T107557'
  and d.Id_Alumno = a.Id_Alumno
  and t.Id_Alumno = a.Id_Alumno;
Lo que necesito es sustituir el Id_Municipio, Id_Estado e Id_Carrera por el nombre respectivo, lo que también me produce problema es que el Id_Municipio e Id_Estado también lo uso para la tabla Alum_Tutor.

Código:
SELECT a.Alum_AP,a.Alum_AM,a.Alum_Nombre,
       d.Alum_Calle,d.Alum_No, d.Alum_Colonia,
       d.Alum_CP, cm1.Nombre_Municipio, cm2.Nombre_Estado,
       d.Alum_Pais, a.Alum_Tel_Casa, a.Alum_Tel_Cel,
       a.Alum_Fecha_Nac, a.Alum_Lugar_Nac, a.Alum_Sexo,
       a.Alum_No_Solicitud,a.Alum_Puntaje_obt,
       cm5.Carrera_Nombre,
       t.Tutor_AP, t.Tutor_AM, t.Tutor_Nombre,
       t.Tutor_Calle, t.Tutor_Numero, t.Tutor_Colonia,
       cm4.Nombre_Municipio, cm3.Nombre_Estado, t.Tutor_Tel_Casa,
       t.Tutor_Tel_Cel
FROM alumno_datos a, alumno_direc d, alumno_tutor t 
LEFT JOIN catalogo_municipio AS cm1 ON d.Id_Municipio = cm1.Nombre_Municipio
LEFT JOIN catalogo_estados AS cm2 ON d.Id_Estado = cm2.Nombre_Estado
LEFT JOIN catalogo_estados AS cm3 ON t.Id_Estado = cm3.Nombre_Estado
LEFT JOIN catalogo_municipio AS cm4 ON t.Id_Municipio = cm4.Nombre_Municipio
LEFT JOIN catalogo_carrera AS cm5 ON a.Id_Carrera = cm5.Carrera_Nombre
WHERE a.Id_Alumno = '20T107557'
  and d.Id_Alumno = a.Id_Alumno
  and t.Id_Alumno = a.Id_Alumno;
Me marca error en el primer LEFT JOIN, y según mis ideas locas es porque ando comparando cosas que no debo como el Id_Municipio con el nombre.. la duda es, ¿Entonces como lo establezco?

De antemano mil gracias!! ^^

Espero haberme explicado..
  #2 (permalink)  
Antiguo 06/08/2010, 21:01
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años
Puntos: 65
Respuesta: Consultar de 3 tablas

juaz! por eso digo que me respondo sola.. que alguien me una los mensajes si es que hago mal..

encontre la solución, eran unos mugrosos parentesis ¬¬' ha! y el ID que si debía mandar en lugar del nombre, eso era una tontera XD
Código:
SELECT a.Alum_AP,a.Alum_AM,a.Alum_Nombre,
       d.Alum_Calle,d.Alum_No, d.Alum_Colonia,
       d.Alum_CP, cm1.Nombre_Municipio, cm2.Nombre_Estado,
       d.Alum_Pais, a.Alum_Tel_Casa, a.Alum_Tel_Cel,
       a.Alum_Fecha_Nac, a.Alum_Lugar_Nac, a.Alum_Sexo,
       a.Alum_No_Solicitud,a.Alum_Puntaje_obt,
       cm5.Carrera_Nombre,
       t.Tutor_AP, t.Tutor_AM, t.Tutor_Nombre,
       t.Tutor_Calle, t.Tutor_Numero, t.Tutor_Colonia,
       cm4.Nombre_Municipio, cm3.Nombre_Estado, t.Tutor_Tel_Casa,
       t.Tutor_Tel_Cel
FROM (alumno_datos a, alumno_direc d, alumno_tutor t )
LEFT JOIN catalogo_municipio cm1 ON (d.Id_Municipio = cm1.Id_Municipio)
LEFT JOIN catalogo_estados cm2 ON (d.Id_Estado = cm2.Id_Estado)
LEFT JOIN catalogo_estados cm3 ON (t.Id_Estado = cm3.Id_Estado)
LEFT JOIN catalogo_municipio cm4 ON( t.Id_Municipio = cm4.Id_Municipio)
LEFT JOIN catalogo_carrera cm5 ON (a.Id_Carrera = cm5.Id_Carrera)
WHERE a.Id_Alumno = '20T107557'
  and d.Id_Alumno = a.Id_Alumno
  and t.Id_Alumno = a.Id_Alumno;
aquí la solución:
http://bugs.mysql.com/bug.php?id=19053

y así quedo mi consulta, estaba bien xDDDD solo eso y ya *O*

gracias a todos! =)
  #3 (permalink)  
Antiguo 10/09/2010, 16:41
 
Fecha de Ingreso: diciembre-2009
Mensajes: 82
Antigüedad: 14 años, 3 meses
Puntos: 0
Respuesta: Consultar de 3 tablas

silvanha,sinceramente no entiendo mucho tu consulta, tu ahi usas más de una tabla,no se como hacer eso solo con una tabla,como es mi caso.

Podrias explicarme un poco mas detallado como debo de hacer??

Te lo agradeceria.

Etiquetas: consultar, 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 15:54.