Comandos Join y Group by - Mysql
Comando Join
El comando Join en mysql, sirve para combinar dos o más tablas según la designación de variables que queramos o necesitemos. Unión entre varias tablas, devuelve la información que encuentra en esa unión.
Tiene tres variables:
1. Inner Join
Sintaxis
select*from tabla1 inner join tabla2 on tabla1.id=tabla2.id inner join tabla3 on tabla2.id=tabla3.id2;
Ejemplo
Visualizar el código del libro, nombre del libro, codigo del autor y el nombre del autor con sus respectivos libros escritos.
Analisis
1. Que se desea consultar y de que tablas?
libro.idlibro
libro.descripcion
autor.codautor
autor.nombre
2. Qué tablas se ven afectadas o involucradas?
Tabla 1: tabla principal= Libro
Tabla 2: tabla relacional=liautedi
Tabla 3: tabla principal=autor
3. Condición
No hay ninguna condición
4. Como se relacionan las tablas?
libro.idlibro=liautedi.idlibro
liautedi.codautor=autor.codautor
5. Que comando se debe utilizar?
Select-inner Join
6. Sintaxis
select distinct libro.idlibro,libro.descripcion,autor.codautor,autor.nombre from libro inner join liautedi on libro.idlibro=liautedi.idlibro inner join autor on liautedi.codautor=autor.codautor;
Nota: para exportar a excel entonces:
select distinct libro.idlibro,libro.descripcion,autor.codautor,autor.nombre from libro inner join liautedi on libro.idlibro=liautedi.idlibro inner join autor on liautedi.codautor=autor.codautor into outfile 'c:/xampp/libroautorjoin.xls';
Este comando se utiliza para saber que registros no tienen correspondencia en otra tabla. Verifica de una tabla izquierda a una tabla derecha, sino encuentra coincidencias se genera una fila extra con todos los campos iguales a Null.
Sintaxis
Ejemplo
Visualizar a que libros no se les a asignado un autor utilizando el left join
Analisis
1. Que se desea consultar y de que tablas?
libro.idlibro
libro.descripcion
2. Qué tablas se ven afectadas o involucradas?
Tabla 1: tabla principal= Libro
Tabla 2: tabla relacional=liautedi
Libros que no tengan autor
4. Como se relacionan las tablas?
libro.idlibro=liautedi.idlibro
5. Que comando se debe utilizar?
Select-left join
6. Sintaxis
select libro.idlibro,libro.descripcion,liautedi.idlibro from libro left join liautedi on libro.idlibro=liautedi.idlibro where liautedi.idlibro is null;
3. Right join
El right join opera del mismo modo que el left join, sólo que la búsqueda de coincidencias la realiza del modo contrario, es decir busca valores de coincidencias desde la tabla de la derecha hacia la tabla que esta a la izquierda y sucede lo mismo que en el left, sino encuentra coincidencia se genera una fila extra con todos los campos iguales a null.
Ejemplo
Visualizar el listado de los libros que tienen al menos un autor asignado
Analisis
1. Que se desea consultar y de que tablas?
libro.idlibro
libro.descripcion
2. Qué tablas se ven afectadas o involucradas?
Tabla 1: tabla principal= Libro
Tabla 2: tabla relacional=liautedi
Libros que tengan al menos un autor
4. Como se relacionan las tablas?
libro.idlibro=liautedi.idlibro
5. Que comando se debe utilizar?
select-right join
6. Sintaxis
select distinct libro.idlibro,libro.descripcion,liautedi.idlibro from libro rigth join liautedi on libro.idlibro=liautedi.idlibro;
Ejercicio
Visualizar los autores con las editoriales que le publican
Analisis
1. Que se desea consultar y de que tablas?
libro.idlibro
libro.descripcion
editorial.codedit
editorial.nombre
editorial.codedit
editorial.nombre
2. Qué tablas se ven afectadas o involucradas?
Tabla 1: tabla principal= Libro
Tabla 2: tabla relacional=liautedi
Tabla 3: tabla primaria=editorial
Tabla 3: tabla primaria=editorial
Ninguna
4. Como se relacionan las tablas?
libro.idlibro=liautedi.idlibro
liautedi.codedit=editorial.codedit
5. Que comando se debe utilizar?
Select inner join
6. Sintaxis
select distinct libro.idlibro,libro.descripcion,editorial.codedit,editorial.nombre from libro inner join liautedi on libro.idlibro=liautedi.idlibro inner join editorial on liautedi.codedit=editorial.codedit;
Ejercicio
Visualizar que autores no han escrito libros
Analisis
1. Que se desea consultar y de que tablas?
libro.idlibro
autor.codautor
autor.nombre
autor.nombre
2. Qué tablas se ven afectadas o involucradas?
Tabla 3: tabla primaria= autor
Tabla 2: tabla relacional=liautedi
Tabla 2: tabla relacional=liautedi
Autores que no han escrito ningún libro
4. Como se relacionan las tablas?
autor.codautor=liautedi.codautor
5. Que comando se debe utilizar?
Select left join
6. Sintaxis
select autor.codautor,autor.nombre,liautedi.codautor from autor left join liautedi on autor.codautor=liautedi.codautor where liautedi.codautor is null;
Ejercicio 3
Visualizar las asignaturas que tienen libros asignados
Analisis
1. Que se desea consultar y de que tablas?
libro.codigomat
libro.descripcion
asignatura.codiogmat
asignatura.codiogmat
2. Qué tablas se ven afectadas o involucradas?
Tabla 1: tabla principal= Libro
Tabla 2: tabla primaria= asignatura
Se muestra las asignaturas con libros
4. Como se relacionan las tablas?
libro.codigomat=asignatura.codiogmat
5. Que comando se debe utilizar?
Select right join
6. Sintaxis
select distinct libro.codigomat,libro.descripcion from libro rigth join asignatura on libro.codigomat=asignatura.codigomat
Comando Group by
Se utiliza cuando en una tabla hay información que se repite
Sintaxis
select*from nombretabla group by nombrecampo;
Ejemplo:
Usando las funciones (max,min,sum.avg,count), visualizar las cantidades de visitantes por ciudad
Análisis
1. Que se desea consultar?
cantidad de visitantes por ciudad
2. Campo en el que se aplica la función?
montocompra
3. Campo por el cual va a agrupar
Ciudad
4. Campo
group by -select -count
Sintaxis
select nombrecampo(s),funcion(campofuncion) as nombredeseado from nombretabla group by nombrecampo;
select ciudad, count (ciudad) as 'cantidad visitantes' from visitantes group by ciudad;
Ejemplo
Visualizar el total comprado por ciudad
Análisis
1. Que se desea consultar?
total comprado por ciudad
2. Campo en el que se aplica la función?
montocompra
3. Campo por el cual va a agrupar
Ciudad
4. Campo
group by -select -sum
select ciudad, sum(montocompra) as 'total compra' from visitantes group by ciudad;
Ejemplo
Visualizar el monto de compra por género
Análisis
1. Que se desea consultar?
total comprado por género
2. Campo en el que se aplica la función?
montocompra
3. Campo por el cual va a agrupar
sexo
4. Campo
group by -select -sum
select sexo, sum(montocompra) as 'total por genero' from visitantes group by sexo;
Ejemplo
Visualizar las ciudades a las que van más de dos visitantes
Análisis
1. Que se desea consultar?
ciudad con mas de dos visitantes
2. Campo en el que se aplica la función?
ciudad
3. Campo por el cual va a agrupar
ciudad
4. Campo
group by -select -count having
select ciudad, count(ciudad) as 'Ciudad más de 2 visitantes' from visitantes group by ciudad having count(ciudad)>2;
Ejemplo
Visualizar el monto compra por ciudad mayores a 5 millones
Análisis
1. Que se desea consultar?
Valor compra por ciudad mayor a 5 millones
2. Campo en el que se aplica la función?
montocompra
3. Campo por el cual va a agrupar
ciudad
4. Campo
group by -select -sum having
select ciudad, sum(montocompra) as 'Ciudad con compra mayor a 5 millones' from visitantes group by ciudad having sum(montocompra)>5000000;
Se utiliza cuando en una tabla hay información que se repite
Sintaxis
select*from nombretabla group by nombrecampo;
Ejemplo:
Usando las funciones (max,min,sum.avg,count), visualizar las cantidades de visitantes por ciudad
Análisis
1. Que se desea consultar?
cantidad de visitantes por ciudad
2. Campo en el que se aplica la función?
montocompra
3. Campo por el cual va a agrupar
Ciudad
4. Campo
group by -select -count
Sintaxis
select nombrecampo(s),funcion(campofuncion) as nombredeseado from nombretabla group by nombrecampo;
select ciudad, count (ciudad) as 'cantidad visitantes' from visitantes group by ciudad;
Ejemplo
Visualizar el total comprado por ciudad
Análisis
1. Que se desea consultar?
total comprado por ciudad
2. Campo en el que se aplica la función?
montocompra
3. Campo por el cual va a agrupar
Ciudad
4. Campo
group by -select -sum
select ciudad, sum(montocompra) as 'total compra' from visitantes group by ciudad;
Ejemplo
Visualizar el monto de compra por género
Análisis
1. Que se desea consultar?
total comprado por género
2. Campo en el que se aplica la función?
montocompra
3. Campo por el cual va a agrupar
sexo
4. Campo
group by -select -sum
select sexo, sum(montocompra) as 'total por genero' from visitantes group by sexo;
Ejemplo
Visualizar las ciudades a las que van más de dos visitantes
Análisis
1. Que se desea consultar?
ciudad con mas de dos visitantes
2. Campo en el que se aplica la función?
ciudad
3. Campo por el cual va a agrupar
ciudad
4. Campo
group by -select -count having
select ciudad, count(ciudad) as 'Ciudad más de 2 visitantes' from visitantes group by ciudad having count(ciudad)>2;
Nota: cuando utilizamos group by y se manejan condiciones estas no funcionan con where sino con la opción having
Ejemplo
Calcular el valor promedio de montocompra agrupados por ciudad y sexo
Análisis
1. Que se desea consultar?
Valor promedio de compra por ciudad y género
2. Campo en el que se aplica la función?
montocompra
3. Campo por el cual va a agrupar
ciudad y sexo
4. Campo
group by -select -avg
select ciudad,sexo, avg(montocompra) as 'Promedio compra ' from visitantes group by ciudad,sexo;1. Que se desea consultar?
Valor promedio de compra por ciudad y género
2. Campo en el que se aplica la función?
montocompra
3. Campo por el cual va a agrupar
ciudad y sexo
4. Campo
group by -select -avg
Ejemplo
Visualizar el monto compra por ciudad mayores a 5 millones
Análisis
1. Que se desea consultar?
Valor compra por ciudad mayor a 5 millones
2. Campo en el que se aplica la función?
montocompra
3. Campo por el cual va a agrupar
ciudad
4. Campo
group by -select -sum having
select ciudad, sum(montocompra) as 'Ciudad con compra mayor a 5 millones' from visitantes group by ciudad having sum(montocompra)>5000000;