Foros del Web » Programando para Internet » PHP »

ver resultados nulos y exitosos de tablas relacionadas en mysql con php

Estas en el tema de ver resultados nulos y exitosos de tablas relacionadas en mysql con php en el foro de PHP en Foros del Web. Hola a todos, estoy intentando hacer lo siguiente en mysql y php, donde los alumnos le hacen preguntas a los profesores, tengo 4 tablas: Código: ...
  #1 (permalink)  
Antiguo 16/03/2009, 01:27
Avatar de Daltom  
Fecha de Ingreso: marzo-2009
Mensajes: 19
Antigüedad: 15 años, 1 mes
Puntos: 1
ver resultados nulos y exitosos de tablas relacionadas en mysql con php

Hola a todos, estoy intentando hacer lo siguiente en mysql y php, donde los alumnos le hacen preguntas a los profesores, tengo 4 tablas:

Código:
********************
# tabla_profesores |
--------------------
| id| nombre_prof  |
--------------------
| 1 | andrea       |
| 2 | diana        |
| 3 | carolina     |
********************

*******************
# tabla_alumnos   |                              
-------------------
| id| nombre_alum |                           
-------------------
| 1 | luis        |                                        
| 2 | carlos      |                                  
| 3 | antonio     |                                 
*******************

******************************
# tabla_preguntas            |
------------------------------
| id | IDalumno | pregunta   |
------------------------------
| 1  |     3    | pregunta a | 
| 2  |     1    | pregunta b | 
| 3  |     3    | pregunta c |
| 4  |     3    | pregunta d |
******************************

************************************
# tabla_respuestas                 |
------------------------------------
| id| IDdelapregunta | respuesta   |
------------------------------------
| 1 |        1       | respuesta a |
| 2 |        3       | respuesta c |
************************************
Quiero que php me muestre:
01. todas las preguntas que ha realizado el alumno 3 (antonio).
02. y a la vez quiero que a las preguntas que ya fueron respondidas les aparezca su respectiva respuesta
03. y tambien quiero que las preguntas que no han sido respondidas aparezcan tambien en el listado con algo que diga "no han respondido tu pregunta".

Yo realizé la siguiente consulta pero el problema es que solo me muestra las preguntas que si tienen respuesta y las otras no me las muestra:

Código PHP:
<?php
$resultado 
mysql_query(

SELECT * FROM tabla_preguntas, tabla_alumnos, tabla_respuestas
WHERE tabla_preguntas.IDalumno = '3' 
AND tabla_preguntas.IDalumno = tabla_alumnos.id 
AND tabla_preguntas.id = tabla_respuestas.IDdelapregunta

"
,$conexion);

while (
$datos mysql_fetch_array($resultado)) {
?>
    <table>
      <tr>
        <td><?php echo $datos['pregunta']; ?></td>
      </tr>
      <tr>
        <td><?php echo $datos['respuesta']; ?></td>
      </tr>

     </table>
<?php
}
?>
Ayudenme por favor a encontrar una solucion para lo que quiero hacer, de antemano gracias por la colaboracion.
  #2 (permalink)  
Antiguo 16/03/2009, 03:35
Avatar de AnisDelMono  
Fecha de Ingreso: febrero-2007
Ubicación: Pas de la Casa
Mensajes: 247
Antigüedad: 17 años, 2 meses
Puntos: 7
Respuesta: ver resultados nulos y exitosos de tablas relacionadas en mysql con php

Creo que es el tipico caso de empleo de left join.

Código PHP:
$resultado mysql_query(

SELECT * FROM tabla_alumnos, tabla_preguntas LEFT OUTER JOIN tabla_respuestas
on tabla_preguntas.id = tabla_respuestas.IDdelapregunta WHERE tabla_preguntas.IDalumno = '3' 
AND tabla_preguntas.IDalumno = tabla_alumnos.id

"
,$conexion); 
Pruebalo. No obstante te aconsejo este enlace:

boozox.net/mysql/explicacion-visual-de-los-sql-join-unir-tablas-con-sql/

Es que lo he hecho muy rapido
  #3 (permalink)  
Antiguo 16/03/2009, 10:57
Avatar de Daltom  
Fecha de Ingreso: marzo-2009
Mensajes: 19
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: ver resultados nulos y exitosos de tablas relacionadas en mysql con php

Excelente respuesta, me has solucionado el problema, creo que tendre que estudiar a fondo esto de los JOIN, gracias.
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 17:26.