Foros del Web » Programando para Internet » PHP »

Relacionar Tablas

Estas en el tema de Relacionar Tablas en el foro de PHP en Foros del Web. Hola, yo de nuevo con problemas.. Necesito relacionar tablas en MsSQL con php, tengo 5 tablas de nombres examen = iduser,idpregunta,idrespuesta,correcta user = id,nombre,mail preguntas ...
  #1 (permalink)  
Antiguo 03/04/2008, 12:54
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 3 meses
Puntos: 2
Exclamación Relacionar Tablas

Hola, yo de nuevo con problemas..

Necesito relacionar tablas en MsSQL con php, tengo 5 tablas de nombres

examen = iduser,idpregunta,idrespuesta,correcta
user = id,nombre,mail
preguntas = idpregunta,pregunta,idmodulo
respuestas = idrespuesta,respuesta,idpregunta,correcta

y necesito hacer una consulta que hago lo siguiente:

Seleccione de examen mediante el iduser y me muestre un usuario determinado de la tabla user, y seleccione de la tabla preguntas mediante el idpregunta de la tabla examen y seleccione de la tabla respuestas mediante el idrespuesta de la tabla examen me diga si el campo correcta de la tabla examen es igual al campo correcta de la tabla respuestas.

Intente con algo asi... pero no me funciona bien y no se donde me estoy equivocando.......

Código PHP:
function consultaExamen($iduser=2
{
    
$examen mysql_query("SELECT * FROM examen WHERE iduser='".$iduser."'");
    while (
$e mysql_fetch_assoc($examen)) 
           {
        echo 
"".$e[0]."";
        
$usuario =  mysql_query("SELECT * FROM user WHERE id='".$e['iduser']."' ");
        while (
$u mysql_fetch_assoc($usuario))
            {
            echo 
"".$u[0]."";
            
$pregunta =  mysql_query("SELECT * FROM pregunta WHERE idpregunta='".$e['idpregunta']."' ");
                while (
$p mysql_fetch_assoc($pregunta))
                {
                echo 
"".$p[0]."";
                 
$respuesta =  mysql_query("SELECT * FROM respuestas WHERE correcta='".$e['correcta']."' ");
                    while (
$r mysql_fetch_assoc($respuesta))
                        {    
                    echo 
"".$r[0]."";    
                        
                    }
                }         
            }
        }

Alguien que me diga como puedo hacer esto o en que me estoy equivocando...

gracias
  #2 (permalink)  
Antiguo 03/04/2008, 16:39
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
Re: Relacionar Tablas

Código PHP:
SELECT e.*,u.*,p.*,r.* WHERE
user 
As u
INNER JOIN examen 
As e ON e.iduser u.id
INNER JOIN pregunta 
As p ON p.idexamen e.id
INNER JOIN respuestas 
As r ON r.idpregunta p.id
WHERE r
.id p.rcorrecta 
A la tabla pregunta debes agregarle un campo "idexamen" que corresponde al id de la tabla examen.

Tambien a la tabla preguntas debes implementarle un campo llamado "rcorrecta" para saber cual de todas las respuestas de esa pregunta (imagino que es múltiple opción) es la correcta.

A la tabla respuestas debes implementarle un idpregunta correspondiente al id de la tabla preguntas.

Aprende a hacer consultas cruzadas asi evitarás esas consultas anidadas y complejas.

Saludos
  #3 (permalink)  
Antiguo 04/04/2008, 03:06
Avatar de DooBie  
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 19 años, 7 meses
Puntos: 71
Re: Relacionar Tablas

Igual me confundo, pero, inner join no funciona con todas las versiones de mysql, consulta la versión de tu mysql y mira la documentación, a ver si acepta esa consulta

saludos!
  #4 (permalink)  
Antiguo 04/04/2008, 05:26
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 4 meses
Puntos: 11
Re: Relacionar Tablas

Amigos

Si inner join no funciona en tu versión de mysql entonces o actualizas el server mysql o te cambias de hosting es muy sencillo. En todos los servidores que conozco no hay ningún problema.

Es como que sigas utilizando win95 en estas alturas.
Aparte de inner join hay muchas posibilidades más solo tienes que ponerte e investigar un poco, por ejemplo:


http://mysql.conclase.net/curso/index.php?sen=JOIN

Saludos
  #5 (permalink)  
Antiguo 04/04/2008, 08:08
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 3 meses
Puntos: 2
Exclamación Re: Relacionar Tablas

Paso a describirlo lo mas que puedo por que es algo complicadito...
tengo 6 tablas...

Tabla user = id,nombre,mail,telefono,direccion,dni
Tabla users_login = id,usuario,pass,nivel_acceso
Tabla examen = id,iduser,idpregunta,idrespuesta,correcta,fecha
Tabla modulo = idmodulo,modulo
Tabla pregunta = idpregunta,pregunta,idmodulo
Tabla respuestas = idpregunta,idrespuesta,respuesta,correcta

Bueno, esas son mis tablas con sus campos correspondientes... ahora explico el sistema que estoy armando y luego hago la pregunta..

Estoy armando un sistema de examenes OnLine, donde el usuario responde a una seria de preguntas las cuales las consulto de la tabla "pregunta" y sus posibles respuestas de la tabla respuestas... hasta aca todo bien, ya lo he realizado sin ningun problema... Pero he aqui el problema...

Estos datos son guardados en la tabla "examen" como vieron anteriormente la tabla examen posee el iduser,idpregunta,idrespuesta,correcta,fecha en estos campos se guradan la informacion...

Pero yo ahora quiero hacer la consulta a esta tabla y quiero que me muestre la pregunta, la respuesta el usuario que respondio y los id guardados....

entonces como hago una consulta en SQL para poder hacer esto, o algun arreglo que me permita hacerlo... gracias a todos de antemano...
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 08:32.