Foros del Web » Programando para Internet » PHP »

Unir tablas (join)

Estas en el tema de Unir tablas (join) en el foro de PHP en Foros del Web. Ké tal a todos! Me podrían orientar cómo puedo hacer la consulta para unir 3 tablas y después mostrarla en pantalla? Básicamente mi problema es ...
  #1 (permalink)  
Antiguo 08/09/2007, 15:27
 
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 44
Antigüedad: 17 años, 2 meses
Puntos: 0
Unir tablas (join)

Ké tal a todos!

Me podrían orientar cómo puedo hacer la consulta para unir 3 tablas y después mostrarla en pantalla?

Básicamente mi problema es este:

Tengo "n" números de tablas, de las cuales 3 necesito unir: "resultados" , "especialidad" y "fecha"
la tabla resultados tiene los campos: id_suma, suma y id_esp
la tabla especialidad: id_esp y especialidad.
la tabla fecha: id_fecha, fecha, id_suma

Cómo sería la consulta para unir primero el id_suma de resultados con fecha?
y luego unir el id_esp para la tabla de resultados y especialidad?

Algún tip? Sé que se utilizará Join, pero no se como hacerlo para 3 tablas y cómo imprimirlo en pantalla la tabla unida.

He investigado y he encontrado este código pero no le entiendo..

Código PHP:
SELECT a.preguntab.resposta FROM preguntes a JOIN respostes b ON a.idPregunta=b.idPregunta 
Muxas gracias de antemano.
  #2 (permalink)  
Antiguo 08/09/2007, 15:48
Avatar de radamantys  
Fecha de Ingreso: agosto-2006
Mensajes: 46
Antigüedad: 17 años, 7 meses
Puntos: 1
Re: Unir tablas (join)

Prueba lo siguiente

Código PHP:

SELECT r
.*,  e.*,  f.* FROM resultados respecialidad efecha f WHERE f.id_suma r.id_suma AND e.id_esp r.id_esp 
Explicacion:

SELECCIONAS todos los campos de la tabla resultado, llamada r, de la tabla especialidad, llamada e y de la tabla fecha llamada f. DONDE el campo id_suma de la tabla fecha 'f.id_suma' sea igual al campo id_suma de la tabla resultado 'r.id_suma' Y el campo id_esp de la tabla especialidad 'e.id_esp' sea igual al campo id_esp de la tabla resultado.

Lo unico que hace el codigo es ponerle nombre en la sentencia a las tablas y compararlas unas con otras. Para ello usa el nombre de la tabla seguido del punto y el nombre del campo. Por ejemplo el campo id_suma de la tabla resultado seria asi 'r.id_suma'.

Saludos.
  #3 (permalink)  
Antiguo 08/09/2007, 16:11
 
Fecha de Ingreso: febrero-2007
Ubicación: México
Mensajes: 44
Antigüedad: 17 años, 2 meses
Puntos: 0
Re: Unir tablas (join)

Radamantys, muxas gracias.!

Ya lo he masticado mejor. Ahora como lo stoy aplicando en php lo hice así.:

Código PHP:
$query_tabla=mysql_query ("SELECT r.*,  e.*,  f.* FROM resultados r, especialidad e, fecha f WHERE f.id_suma = r.id_suma AND e.id_esp = r.id_esp  "$connection); 
Y ahora como deseo imprimirlo en pantalla, supongo que algo así iria el codigo.

Código PHP:
echo "<center><table border = '1'> \n";
echo 
"<tr> \n";
echo 
"<td><span class='Estilo4'><center><b>ID_ SUMA</b></center></span></td> \n";
echo 
"<td><span class='Estilo4'><center><b>SUMA</b></center></span></td> \n";
echo 
"<td><span class='Estilo4'><center><b>ESPECIALIDAD</b></center></span></td> \n";
/*echo "<td><span class='Estilo4'><center><b>FECHA</b></center></span></td> \n";*/

echo "</tr> \n";

    while (
$row_punt mysql_fetch_row($query_tabla)){


        echo 
"<tr> \n";
        echo 
"<td><span class='Estilo4'><center><b>$row_punt[0]</b></center></span></td> \n";
        echo 
"<td><span class='Estilo4'><center><b>$row_punt[1]</b></center></span></td> \n";
        echo 
"<td><span class='Estilo4'><center><b>$row_punt[2] </b></center></span></td> \n";
        
/*echo "<td><span class='Estilo4'><center><b>$row_fecha[1]</b></center></span></td> \n";*/
        
echo "</tr> \n";
        }
//}
echo "</table></center> \n"

Pero aun estoy confundida en la parte del $row_punt[x] Porque ahora como ya tenemos una tabla unida ahora no sé como asociar los para que se impriman ordenaditos de acuerdo a la cabecera de la tabla y sea más entendible. Es decir. de todos los campos, me interesa que se imprima el id_suma, suma, especialidad y fecha

O alguna mejor manera para hacerlo? please!!
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




La zona horaria es GMT -6. Ahora son las 15:41.