Consultar varias tablas desde php y mysql

Consultar varias tablas desde php y mysql

Hola amigos, hoy les voy hablar sobre las consultas a varias tablas en base de datos mysql mediante el lenguaje php, Si aun no tienes un servidor instalado en tu ordenador y quieres instalarlo te recomiendo que uses el XAMPP en su ultima version que hasta la fecha de este tutorial esta en su version 7.1.1 de lo contrario puedes instalar el que mas te combenga o simplemente dirigirte a tu servidor remoto y crear un archivo php para que vallas probando los resultados de las consultas.

Lo primero que vamos es a crear en nuestro servidor es una base de datos y  dentro de esa base de datos vamos proceder a crear varias tablas, para este ejemplo aquí les voy a crear 2 tablas de ejemplo para que mas o menos les tomen la idea de como se hace.

Código de las tablas que vamos a consultar al mismo tiempo.

CREATE TABLE tabla1
(
idTabla1 INT NOT NULL AUTO_INCREMENT,
nombre VARCHAR(50),
apellido VARCHAR(50),
email VARCHAR(50),
clave VARCHAR(30),
PRIMARY KEY(idTabla1)
)


CREATE TABLE tabla2
(
idTabla2 INT NOT NULL AUTO_INCREMENT,
idTabla1 INT,
pais VARCHAR(11),
probincia VARCHAR(11)
PRIMARY KEY(idTabla2)
)

Si nos fijamos en la estructura de nuestras tablas podemos ver que los datos que nos piden una corresponden a datos de una persona en este caso es la tabla1 la cual pertenece a los usuarios, por otro lado vemos que la tabla2 corresponde a datos de país ya que esta tabla la vamos a utilizar para estos fines, lo que pretendemos con esto es crear sentencias sql con php que nos puedan arrojar datos de las dos tablas combinando los nombres.

Ahora realizamos la siguiente consulta que corresponderán a la tabla1 que es para usuarios.

INSERT INTO tabla1(nombre,apellido,email,clave)
VALUES
('Juan','Perez','juan01@hotmail.com','123'),
('Ramon','Vaez','ramon01@hotmail.com','1234');
Ahora en la tabla2 realiza la siguiente consulta

INSERT INTO tabla2(idTabla1,pais,probincia)
VALUES
(2,'Rep.Dominicana','San Cristobal'),
(1,'Espana','Madrid');

Ahora dirígete a la tabla2 y inserta los siguientes datos

Aquí lo que tenemos es 2 tablas relacionadas por un campo que es por el campo idTabla1 que se encuentra en las dos tablas, ahora bien se que tal vez te estaras preguntando Y para que me puede servir esto de relacionar varias tabls?
Es simple esto se utiliza para no redundar datos en el servidor, y para impedir que nuestra base de datos valla aumentando a una velocidad enorme.

Si te fijas en las 2 tablas que hemos creado, tenemos una tabla para registrar usuarios y otra para sus datos adjuntos que no es necesario tenerlo en una misma tabla.

Imaginemos no que las dos tablas que creamos anterior mente la estuviéramos solo en una, que pasaría aquí? lo que pasaría es que no vamos a poder llevar un control optimo porque si por alguna razón queremos buscar todos los usuarios que correspondan a x país vamos a tener que buscar todas las formas posibles que los usuarios han indicado en el campo país.

En caso de tener estas 2 tablas nos da la seguridad que el usuario solo va a introducir un único nombre de país y un único nombre de provincia, y esto porque? pues muy simple en la tabla2 que corresponde a país ingresamos todos los países que queramos y lo referenciamos con un código a nuestro formulario, así evitamos que los usuarios introduzcan diferentes nombres para cada país.

La pregunta es como acceder a esas 2 tablas y saber que país le toca a cada usuario? para eso tenemos el campo tabla1 donde vamos hacer la consulta de la siguiente manera.

Consultar dos tablas mysql php

<?php
//creamos la conexion a la base de datos
$host="localhost";
$usuario="root";
$password="";
$bd="noticias";
$conexion=mysql_connect($host,$usuario,$password)or die(mysql_error());
$db= mysql_select_db($bd,$conexion);


$query = "SELECT * FROM tabla1,tabla2     WHERE tabla1.idTabla1 = tabla2.idTabla1 AND tabla1.nombre = 'Maria'";
$consulta = mysql_query($query,$conexion);


while($row = mysql_fetch_assoc($consulta))
{
    echo 'Nombre: ';
    echo $row['nombre'].'<br />';
    echo 'Pais: ';
    echo $row['pais'].'<br />';
    echo 'Probincia: ';
    echo $row['probincia'];
}mysql_free_result($consulta);


?>


El resultado de esta consulta seria el siguiente.

Ramon—>>Rep.Dominic
Juan—>>Espana

Si te fijas aquí podemos ver que país le corresponde a cada usuario, ahora supongamos que solo queremos ver los usuarios que viven en España, para este ejemplo vamos a agregar mas usuarios a las con la siguiente consulta.

INSERT INTO tabla1(nombre,apellido,email,clave) 
VALUES
('Maria','Martinez','maria@gmail.com','maria'),
('Rosario','Valdez','rosario1@hotmail.com','rosario01');


?>


Ahora en la tabla2 realiza la siguiente consulta

INSERT INTO tabla2(idTabla1,pais,probincia) 
VALUES
(4,'Rep.Dominicana','San Cristobal'), 
(3,'Espana','Madrid');


Ahora vamos a realizar la misma consulta pero pasando le un operador lógico en este caso sera el AND con el cual vamos a poder saber que usuario es que queremos ver y cual es su país y su provincia, modifica la siguiente linea en el código php que creamos anteriormente.

$query = "SELECT * FROM tabla1,tabla2 WHERE tabla1.idTabla1 = tabla2.idTabla1 AND tabla1.nombre = 'Maria'";


El resultado de esta consulta nos arrojara los datos de María su país y su provincia.

Nombre: María
 Pais: Rep.Dominic
 Provincia: San Cristobal

También podemos seguir poniendo mas condicionales por ejemplo si la clave es igual a la que ingrese el usuario o si la provincia es igual que la que ingrese el usuario en fin, Con esto podemos hacer una infinidad de cosas para manipular datos almacenados en tablas.

Mostrar datos de mysql en php en una tabla html 

Algo que se usa mucho para mostrar datos es realizar un documento HTML con una tabla y colocar cada uno de estos datos en dicha tabla, esta tabla puede ser de forma dinámica o estática según el criterio de cada uno de ustedes, si no saben como mostrar datos de mysql en php en una tabla html entonces los invito a que me dejen un comentario y arrancamos enseñando como se hace.

Bueno amigos con esto terminamos este pequeño mini-tutorial sobre realizar consulta a varias tablas mysql mediante php o como dice la entrada Consultar varias tablas desde php, ya saben cualquier consulta duda o sugerencia dejen un comentario o en un mensaje privado. sera hasta la próxima entrada…

Comments

  1. By Anónimo

  2. By David

  3. By admin

Deja un comentario

Tu dirección de correo electrónico no será publicada.