Categoria: Programacion Tema: Php Titulo: INNER JOIN Seleccion de registros de varias tablas
Fecha del Tema: 2013-04-22 18:51:50INNER JOIN - Selección de registros de varias tablas en php Ahora veremos como imprimir todos los alumnos inscritos a los cursos junto al nombre del curso donde está inscripto. Los datos se encuentran en las tablas "alumnos" y "cursos". Debemos aparear el código de curso de la tabla "alumnos" con el código de la tabla "cursos". El código del programa que hace esto es el siguiente: <html> <head> <title>Problema</title> </head> <body> <?php $conexion=mysql_connect("localhost","root","z80") or die("Problemas en la conexion"); mysql_select_db("phpfacil",$conexion) or die("Problemas en la selección de la base de datos"); $registros=mysql_query("select alu.codigo as codigo,nombre,mail,codigocurso, nombrecur from alumnos as alu inner join cursos as cur on cur.codigo=alu.codigocurso", $conexion) or die("Problemas en el select:".mysql_error()); while ($reg=mysql_fetch_array($registros)) { echo "Codigo:".$reg[`codigo`]."<br>"; echo "Nombre:".$reg[`nombre`]."<br>"; echo "Mail:".$reg[`mail`]."<br>"; echo "Curso:".$reg[`nombrecur`]."<br>"; echo "<hr>"; } mysql_close($conexion); ?> </body> </html> Hay varias cosas nuevas cuya sintaxis necesitamos analizar, la primera es como hacer el apareo con la tabla cursos: inner join cursos as cur on cur.codigo=alu.codigocurso", Luego de las palabras claves inner join, indicamos la tabla que necesitamos aparear, podemos crear un alias de una palabra mediante la palabra clave as. En el resto de la consulta, en vez de indicar el nombre de la tabla, hacemos referencia al alias (generalmente un nombre más corto). Seguidamente de la palabra. clave on, indicamos los campos por los que apareamos las tablas, en nuestro caso el codigo de la tabla cursos con el codigocur de la tabla alumnos. Otro punto a tener en cuenta es indicar en el select qué campos debemos rescatar de las tablas, es decir, indicarle a qué tabla pertenece en el caso que tengan el mismo nombre: <?php $registros=mysql_query("select alu.codigo as codigo,nombre,mail, codigocurso, nombrecur from alumnos as alu ?> En este caso rescatamos el código del alumno (y no el código de curso). Debemos crear un alias si dos tablas tienen el mismo nombre de campo para evitar confusión; como ocurre aquí con el campo codigo de las tablas alumnos y cursos. También creamos un alias para la tabla alumnos. Cuando rescatamos los datos y los mostramos en la página, hacemos referencia al alias del campo: <?php while ($reg=mysql_fetch_array($registros)) { echo "Codigo:".$reg[`codigo`]."<br>"; echo "Nombre:".$reg[`nombre`]."<br>"; echo "Mail:".$reg[`mail`]."<br>"; echo "Curso:".$reg[`nombrecur`]."<br>"; echo "<hr>"; } ?>
INNER JOIN - Selección de registros de varias tablas en php Ahora veremos como imprimir todos los alumnos inscritos a los cursos junto al nombre del curso donde está inscripto. Los datos se encuentran en las tablas "alumnos" y "cursos". Debemos aparear el código de curso de la tabla "alumnos" con el código de la tabla "cursos". El código del programa que hace esto es el siguiente: <html> <head> <title>Problema</title> </head> <body> <?php $conexion=mysql_connect("localhost","root","z80") or die("Problemas en la conexion"); mysql_select_db("phpfacil",$conexion) or die("Problemas en la selección de la base de datos"); $registros=mysql_query("select alu.codigo as codigo,nombre,mail,codigocurso, nombrecur from alumnos as alu inner join cursos as cur on cur.codigo=alu.codigocurso", $conexion) or die("Problemas en el select:".mysql_error()); while ($reg=mysql_fetch_array($registros)) { echo "Codigo:".$reg[`codigo`]."<br>"; echo "Nombre:".$reg[`nombre`]."<br>"; echo "Mail:".$reg[`mail`]."<br>"; echo "Curso:".$reg[`nombrecur`]."<br>"; echo "<hr>"; } mysql_close($conexion); ?> </body> </html> Hay varias cosas nuevas cuya sintaxis necesitamos analizar, la primera es como hacer el apareo con la tabla cursos: inner join cursos as cur on cur.codigo=alu.codigocurso", Luego de las palabras claves inner join, indicamos la tabla que necesitamos aparear, podemos crear un alias de una palabra mediante la palabra clave as. En el resto de la consulta, en vez de indicar el nombre de la tabla, hacemos referencia al alias (generalmente un nombre más corto). Seguidamente de la palabra. clave on, indicamos los campos por los que apareamos las tablas, en nuestro caso el codigo de la tabla cursos con el codigocur de la tabla alumnos. Otro punto a tener en cuenta es indicar en el select qué campos debemos rescatar de las tablas, es decir, indicarle a qué tabla pertenece en el caso que tengan el mismo nombre: <?php $registros=mysql_query("select alu.codigo as codigo,nombre,mail, codigocurso, nombrecur from alumnos as alu ?> En este caso rescatamos el código del alumno (y no el código de curso). Debemos crear un alias si dos tablas tienen el mismo nombre de campo para evitar confusión; como ocurre aquí con el campo codigo de las tablas alumnos y cursos. También creamos un alias para la tabla alumnos. Cuando rescatamos los datos y los mostramos en la página, hacemos referencia al alias del campo: <?php while ($reg=mysql_fetch_array($registros)) { echo "Codigo:".$reg[`codigo`]."<br>"; echo "Nombre:".$reg[`nombre`]."<br>"; echo "Mail:".$reg[`mail`]."<br>"; echo "Curso:".$reg[`nombrecur`]."<br>"; echo "<hr>"; } ?>