Está en la página 1de 3

----INNER JOIN-----------

Supongamos que tenemos una tabla con los empleados de una empresa (con un
identificador llamado Id, un campo de nombre, uno de apellidos y uno con el Id del
departamento en que trabaja llamado IdDepartamento) y en otra tenemos los
departamentos (Id y Nombre). Algunos trabajadores tienen un departamento asignado y
otros no, y obviamente la relaci�n entre ambas tablas se da entre el campo Id de
Departamento con el campo IdDepartamento de la tabla Empleados. Utilizando un inner
join podr�amos obtener el listado de todos los trabajadores que tienen un
departamento asignado:

select e.nombre, e.apellidos from empleados e inner join departamentos d on


e.IdDepartamento=d.Id;

entre 3 tabla con INNER JOIN:


SELECT
u.us_nombre usuario,
b.bod_nombre bodega
FROM us2bod ub
INNER JOIN usuarios u ON ub.us_id = u.us_id
INNER JOIN bodegas b ON ub.bod_id = b.bod_id

-----------left join------------------------------------
recogemos todos los datos de la tabla que est� a la izquierda de la uni�n en la
consulta. Imaginemos las tablas de antes, pero ahora queremos todos los datos de la
tabla empleados, tengan o no departamento

select e.nombre, e.apellidos from empleados e left join departamentos d on


e.IdDepartamento=d.Id

---------------BETWEEN------------------------------
"SELECT * FROM productos WHERE fecha_reg BETWEEN '$desde' AND '$hasta' ORDER BY
id_prod ASC"

SELECT * FROM Tabla1 WHERE Fecha BETWEEN '2011-09-01' AND '2011-10-01'

--> SELECT *
FROM documentos
WHERE fecha_hora BETWEEN '20100615' AND '20100615 8:00:00'

--> calculos
Y aplicado a cada empleado obtenemos los porcentajes:
C�DIGO: SELECCIONAR TODO
select NOMBRE , APELLIDOS , SALARIO / 5525.5 * 100 as PORCENTAJE
from EMPLEADOS

select sum(SALARIO) / count(*) as MEDIA_SALARIOS


from EMPLEADOS
-------------------------------------------------------

//consulta para hallar el total del monto


select sum(total) as Total
from preventas pre
INNER JOIN condiciones con ON pre.condicion_id = con.id
WHERE created BETWEEN '20170331' AND '20170401' AND con.condicion ='ENTREGADO';

// consulta para seleccionar campos de acuerdo a fechas

SELECT
pre.modified ,
con.condicion condicion,
emp.nombres empleado,
pre.total
FROM preventas pre
INNER JOIN condiciones con ON pre.condicion_id = con.id
INNER JOIN empleados emp ON pre.empleado_id = emp.id
WHERE pre.modified BETWEEN '20170331' AND '20170401';

----------sQL para ver cantidad de dias transcurridas mayor a 30 ,mostrando por id


---

SELECT cliente_id, modified FROM preventas WHERE (TO_DAYS(CURDATE()) -


TO_DAYS(MAX(modified)))>=30;

--------------COMO CONSEGUIR LA EDAD A PARTIR DE UNA FECHA DADA----------

SELECT AMIGOS.NOMBRE, YEAR(CURDATE())-YEAR(`AMIGOS`.`F_NACIMIENTO`) AS


`EDAD_ACTUAL` FROM AMIGOS WHERE `AMIGOS`.`NOMBRE`='PABLO' AND
`AMIGOS`.`APELLIDO`='IGLESIAS'; sin comillas en los campos

--------------------------------------
select cliente_id, total, created from preventas pre
where created = (select Max(created) from preventas where cliente_id =
pre.cliente_id);

//........ver cliente con us ultima fecha de registro


select cliente_id, total, created from preventas pre where created = (select
Max(created) from preventas where cliente_id = pre.cliente_id);

208 80 2017-02-04
87 88 2017-04-03
252 70 2017-04-03
82 96 2017-02-21
---------------------------------------------------------
select cliente_id, total, TO_DAYS(CURDATE()) - TO_DAYS(created) AS dias from
preventas pre where created = (select Max(created) from preventas where cliente_id
= pre.cliente_id);

0?
select * from preventas where DATEDIFF(created,CURDATE())>=30

select cliente_id, total, created from preventas pre where created = (select
Max(created) from preventas where cliente_id = pre.cliente_id) and
DATEDIFF(CURDATE(),created)>=30;
//...........calcula diferencia de dias
select * from preventas where DATEDIFF(CURDATE(),created)>=30

//......VER clientes con mas de 30 dias sin pedir


select cliente_id, total, created from preventas pre where created = (select
Max(created) from preventas where cliente_id = pre.cliente_id) and
DATEDIFF(CURDATE(),created)>=30;

select cli.nombre Cliente, pre.total monto_total, pre.created fecha_preventa,


pre.modified fecha_entrega from preventas pre INNER JOIN clientes cli ON
pre.cliente_id = cli.id
where created = (select Max(created) from preventas where cliente_id =
pre.cliente_id) and DATEDIFF(CURDATE(),created)>=30;

También podría gustarte