Comunidad de diseño web y desarrollo en internet online

INNER JOIN

Citar            
MensajeEscrito el 02 Oct 2011 03:08 pm
Buenas, estoy diseñando una pagina web en flash, php y sql. El caso es el siguiente:
En MySQL tengo un base de datos llamada aulavirtual la cual contiene dos tablas:
ESTUDIANTE (CEDULA, NOMBRE, GRADO, SECCION, NOTA1, NOTA2, NOTA3, NOTA4, NOTA5)
GRADOS (GRADOID, EVAL1, EVAL2, EVAL3, EVAL4, EVAL5)
Necesito saber como conectar las dos tablas de tal manera que cuando el archivo de flash donde hay un cuadro de texto donde el usuario introduce su CEDULA, este manda una solicitud de consulta de CEDULA en ESTUDIANTE, para que busque el NOMBRE del usuario, su GRADO, SECCION, NOTA1, NOTA2, NOTA3, NOTA4, NOTA5 y los EVAL1, EVAL2, EVAL3, EVAL4, EVAL5

Código PHP :

<?php
//indicar servidor
$link = mysql_pconnect("127.0.0.1", "root", "");
// indicar base de datos
mysql_select_db("aulavirtual");
// sentencia sql
$buscarestudiante =$_GET['cedulaswf'];
$sentencia = "select * from estudiante where cedula=" . $buscarestudiante;
// enviar sentencia
////$datos=mysql_query($sentencia,$link) or die(mysql_error());
$datoestudiante = mysql_query($sentencia, $link);
$fila = mysql_fetch_assoc($datoestudiante);
//imprimir datos del alumno
$cedula = $fila['cedula'];
print "&cedula=" . $cedula;
$nombre = $fila['nombre'];
print "&nombre=" . $nombre;
$grado = $fila['grado'];
print "&grado=" . $grado;
$seccion = $fila['seccion'];
print "&seccion=" . $seccion;
//calificaciones
$actividad1 = $fila['nota1'];
print "&actividad1=" . $actividad1;
$actividad2 = $fila['nota2'];
print "&actividad2=" . $actividad2;
$actividad3 = $fila['nota3'];
print "&actividad3=" . $actividad3;
$actividad4 = $fila['nota4'];
print "&actividad4=" . $actividad4;
$actividad5 = $fila['nota5'];
print "&actividad5=" . $actividad5;
//evaluaciones
$evaluacion1 = $fila['eval1'];
print "&evaluacion1=" . $evaluacion1;
$evaluacion2 = $fila['eval2'];
print "&evaluacion2=" . $evaluacion2;
$evaluacion3 = $fila['eval3'];
print "&evaluacion3=" . $evaluacion3;
$evaluacion4 = $fila['eval'];
print "&evaluacion4=" . $evaluacion4;
$evaluacion5 = $fila['eval5'];
print "&evaluacion5=" . $evaluacion5;
?>


La sentencia la hice por INNER JOIN pero no se si es la correcta:

Código PHP :

$sentencia = "SELECT * from (ESTUDIANTE INNER JOIN GRADOS ON ESTUDIANTE .GRADO=GRADOS.GRADOID ) WHERE CEDULA=" . $buscarestudiante;

OJO: ESTUDIANTE .GRADO y GRADOS.GRADOID contiene los mismos valores por ejemplo (3, 4, 5)

Por argenisperez007

0 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Oct 2011 04:30 pm
primero, creo que estudiante no deberia tener una columna grado_id y tampoco almacenar las notas, si un estudiante esta en varios grados hay 3 columnas de esa tabla con informacion repetida que , creo , que no son necesarias por lo que yo las tablas las crearia asi

estudiante (cedula, Nombre, Seccion)
Grado_Estudiante(cedulaEstuidante, idGrado, Nota1,nota2,nota3,nota4,nota5)
grados (GRADOID, EVAL1, EVAL2, EVAL3, EVAL4, EVAL5)

dicho esto, que no es lo que preguntabas. creo que la consulta que buscas no es con inner join sino con NATURAL JOIN

creo que lo que pretendes es que al buscar la base de datos empareje directamente el idGrado de estudiante con el idGrado de Grados ¿cual es tu error? pues que para esto las columnas deben tener el mismo nombre en ambas tablas sql no sabe lo que almacenas ni interpreta la cadena del nombre de la columna, solo las compara asi que no sabe que grado e idGrado hacen referencia al mismo dato.

puedes hacer la consulta sin modificar la tabla haciendo la comparacion en el where

SELECT *
FROM ESTUDIANTE GRADO
WHERE grado.idgrado = estudiante.grado

un saludo.

Por bray

65 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Oct 2011 05:26 am

Por Inyaka

Claber

3176 de clabLevel

9 tutoriales
2 articulos

Genero:Masculino   Desarrollador de GAIA

Programador y fotógrafo

firefox
Citar            
MensajeEscrito el 03 Oct 2011 09:42 am
Si como me has dicho , cada estudiante solo puede estar en un grado, entonces las tablas estan bien como estan , te respondo por aqui para que , si se resuelve tu problema, otros puedan acceder a la respuesta y tal vez les ayude.

La consulta que te puse en mi mensaje anterior debe funcionar, como dice inyaka, pruebala primero en phpmyadmin y si te funciona ahi, haz un echo en php antes de que se haga la consulta a ver si se esta haciendo correctamente, porque a veces, los parametros se pasan de manera incorrecta

Por bray

65 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.