Pues yo no sé qué tal se les da a ustedes amigos el SQL pero a mí a veces se me enredan algunas cosas a la hora de hacer esas consultas súper largas y tengo que echarles un ojo a algunas sencillas para ir particionado el problema. Así que aquí les dejo algunas consultas fáciles y otras un poquito más enredadas para que vean algunos ejemplos de lo que se puede hacer con SQL y tal vez les sirva para completar o darse cuenta de que es lo que les falta en esa sintaxis que estén trabajando.

--Selecciona los registros que estan en una tabla y no tienen referencia en la otra tabla

select *

from tabla1

where tabla1.codigo not in (select codigo from tabla2)

--Seleciona los registros distintos que estan en una tabla relacionada con otra y no tienen referencia en otra tabla

select distinct tabla1.codigo, tabla1.area, tabla2.area_reporta

from tabla1

inner join tabla2 on tabla2.codigo = tabla1.codigo

where (tabla2.area_reporta not in (select codigo from tablaareas))


--Actualiza los valores de un campo de la tabla1 con las condiciones de relacion siguiente: que exista un registro en la tabla2 ,que el campo area en tabla1 no exista en la tablaareas

update tabla1

set tabla1.area_reporta = (select area from tabla2 where tabla1.codigo = tabla2.codigo)

where tabla1.area_reporta not in (select codigo from tablaareas) and (select area from tabla2 where tabla1.codequipo= tabla2.codigo) is not null


-- elimina los registros de la tabla1 que no poseen relacion con la tabla2

delete from tabla1

Where tabla1.codigo not in (select codigo from tabla1)


-- Actualiza los campos de una tabla en una <strong>BD</strong> a otra en otra BD en el mismo servidor con varias condiciones como ya hemos visto arriba

update BD1.dbo.tabla1

set BD1.dbo.tabla1.campo = (select campo from BD2.dbo.tabla2 where BD1.dbo. tabla1.codigo = BD2.dbo.tabla2.codigo)

where (select campo from BD2.dbo. tabla2 where BD1.dbo.tabla1.codigo = BD2.dbo.tabla2.codigo) is not null


-- insertar datos de una tabla a otra en distintas Bases de datos dentro de un mismo servidor con las condiciones de que el codigo no exista en la tabla a copiar los registros y el año de la fecha sea mayor que 2014

INSERT INTO BD1.dbo.tabla1

SELECT * from BD2.dbo.tabla2

where (BD2.dbo.tabla2.codigo not in (select codigo from BD1.dbo. tabla1) ) and (year(BD2.dbo.tabla2.fecha) > 2014)

pues bueno si alguien desea compartir alguna puede ponerla en los comentarios y explicar como funciona. O igual poner alguna que desee que se le aclare. Un saludos a todos y hasta el proximo articulo 🙂

Anuncios