Foros del Web » Programando para Internet » PHP »

Problema al Consultar datos de varias tablas

Estas en el tema de Problema al Consultar datos de varias tablas en el foro de PHP en Foros del Web. Hola que tal!!! Disculpen, tengo un problema, quiero consultar todos los cambos de varias tablas unicamente cuando el campo MATRICULA sea igual a 1, tengo ...
  #1 (permalink)  
Antiguo 03/11/2009, 20:17
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 15 años, 6 meses
Puntos: 3
Problema al Consultar datos de varias tablas

Hola que tal!!!

Disculpen, tengo un problema, quiero consultar todos los cambos de varias tablas unicamente cuando el campo MATRICULA sea igual a 1, tengo asi:

Tablas:
Estudiantes
Horarios
Materias
Evaluaciones

Todas esas tablas tienen en común el campo: Matricula

Entonces, un estudiante, por ejemplo el estudiante con matricula 1 tiene en cada tabla información específica, ejemplo:

Tabla Estudiantes: Matricula, Nombre, APaterno, AMaterno
Tabla Horarios: Matricula, Horario
Tabla Materias: Matricula, Inglés, Computación, Administración
Tabla: Evaluaciones: Matricula, E1, E2, E3, E8, E5, E6, E7

Entonces quiero que cuando consulte me muestre todos los datos de los campos de esas tablas cuya matricula sea igual a 1 (en este ejemplo)

He usado lo siguiente:

Código PHP:
$Buscar "SELECT * from Estudiantes, Evaluaciones, Horarios, Materias where Matricula='1' "
sin embargo cuando hago la consulta en el PHP me sale asi:

Column 'Matricula' in where clause is ambiguous

No se si alguien pudiera por favor ayudarme a saber como podría en todo caso realizar dicha consulta... Gracias de antemano
  #2 (permalink)  
Antiguo 03/11/2009, 21:08
 
Fecha de Ingreso: septiembre-2007
Mensajes: 12
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Problema al Consultar datos de varias tablas

Haber amigo, no soy muy experto en esto, pero prueba esto haber que tal:

crea una variable que tome el valor de la matricula a consultar ejemplo

$mat="1";
$Buscar = "Select * from Estudiantes, Evaluaciones, Horarios, Materias where Estudiantes.Matricula=$mat and Evaluaciones.Matricula=$mat and Horarios.Matricula=$mat and Materias.Matricula=$mat";

ese codigo deberia funcionarte, ya que lo que entiendo del mensaje es que, el campo Matricula existe en mas de una tabla, y tienes que especificarle en cual de esas tablas vas a consultar, con eso le especificamos las tablas y campos a consultar.
  #3 (permalink)  
Antiguo 04/11/2009, 08:24
 
Fecha de Ingreso: octubre-2009
Mensajes: 19
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Problema al Consultar datos de varias tablas

Te recomiendo utilizar el comando "JOIN" que te permite comparar si el valor existe en tablas distintas.

Saludos.
  #4 (permalink)  
Antiguo 04/11/2009, 08:26
Avatar de Synkronice  
Fecha de Ingreso: octubre-2007
Ubicación: Madrid
Mensajes: 831
Antigüedad: 16 años, 6 meses
Puntos: 48
Respuesta: Problema al Consultar datos de varias tablas

Te recomiendo preguntar en el foro MySQL, el cual se creo con el objetivo de resolver este tipo de dudas.
  #5 (permalink)  
Antiguo 04/11/2009, 08:35
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: Problema al Consultar datos de varias tablas

cuando pregunta a varias tablas y alguna de ellas tiene el mismo campo debe especificar el nombre de la tabla por ejemplo.

select * from tabla1, tabla2 WHERE tabla1.campo = 'algo' AND tabla2.campo = 'algo';

saludos.
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #6 (permalink)  
Antiguo 04/11/2009, 11:36
Avatar de jlmoreno31  
Fecha de Ingreso: mayo-2009
Ubicación: Barcelona
Mensajes: 174
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Problema al Consultar datos de varias tablas

Eso te pasa porque no has definido el campo matricula de que tabla cogerla. Es decir:

la sentencia correcta sería

$Buscar = "SELECT Estudiantes.Matricula, Evaluaciones.Matricula, Horarios.Matricula, Materias.Matricula FROM Estudiantes,Evaluaciones,Horarios,Materias where Estudiantes.Matricula='1' AND Evaluaciones.Matricula='1' AND Horarios.Matricula='1' AND Materias.Matricula='1' ";

De todos modos para dos tablas no pasa nada, pero como verás cuando se aplica en muchas tablas la query es muy larga. Te aconsejo que uses JOIN.

Saludos
  #7 (permalink)  
Antiguo 04/11/2009, 12:26
 
Fecha de Ingreso: septiembre-2007
Mensajes: 12
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: Problema al Consultar datos de varias tablas

Nuevamente insisto

crea una variable que tome el valor de la matricula a consultar ejemplo

$mat="1";
$Buscar = "Select * from Estudiantes, Evaluaciones, Horarios, Materias where Estudiantes.Matricula=$mat and Evaluaciones.Matricula=$mat and Horarios.Matricula=$mat and Materias.Matricula=$mat";

o en su defecto si deseas puedes hacerlo

$Buscar = "Select * from Estudiantes, Evaluaciones, Horarios, Materias where Estudiantes.Matricula='1' and Evaluaciones.Matricula='1' and Horarios.Matricula='1' and Materias.Matricula='1'";

con cualquiera de las 2 opciones, funciona a la perfeccion.

kaninox, es la misma explicacion que le di, solo que. estoy utilizando una variable en vez del valor directamente en la consulta.

jlmoreno31 respeto tu opinion, pero recuerda que el desea obtener todos los campos de todas las tablas, cosa con la cual en tu codigo no se lo estas permitiendo, ya que estas haciendo la seleccion de los campos a comparar y no los otros campos.
  #8 (permalink)  
Antiguo 04/11/2009, 13:20
 
Fecha de Ingreso: octubre-2008
Mensajes: 147
Antigüedad: 15 años, 6 meses
Puntos: 3
Respuesta: Problema al Consultar datos de varias tablas

Hola de nuevo

Muchas gracias a todos por la amabilidad en haber respondido, debido a que no sabría bien lo del metodo que comentan JOIN he solucionado el problema gracias a la idea de Chikozulia, con su método puedo hacer que la variable $mat se defina segun mi valor en $_POST y así busque la misma matricula en todas las tablas sin estar especificando el " Tabla_X.Matricula = ''1" " ...

Muchas gracias por el consejo Chikozulia, me ha sido muy útil.
  #9 (permalink)  
Antiguo 04/11/2009, 13:29
Avatar de jlmoreno31  
Fecha de Ingreso: mayo-2009
Ubicación: Barcelona
Mensajes: 174
Antigüedad: 14 años, 11 meses
Puntos: 2
Respuesta: Problema al Consultar datos de varias tablas

Chikozulia ningún problema. Simplemente no me fije que datos queria recojer. :O)
  #10 (permalink)  
Antiguo 04/11/2009, 13:41
 
Fecha de Ingreso: octubre-2009
Mensajes: 19
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Problema al Consultar datos de varias tablas

Un concejo, usando JOIN no sobrecargas tu pagina o sitio, de la otra forma usando la consulta plana haces mas lenta tu aplicación.

Dale un vistaso, saludos.
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 19:55.