lunes, 26 de septiembre de 2011

Operadores INTERSECT, EXCEPT y UNION


INTERSECT, EXCEPT y UNION  son un set de operadores que ejecutan operaciones entre 2 o más set de datos.   UNION ha estado disponible en T-SQL desde las primeras versiones,  mientras INTERSECT y EXCEPT fueron introducidos en SQL 2005.     Los tres operadores tienen requerimientos similares:
1.       Requieren un mínimo de 2 set de datos.
2.       Cada set de datos debe tener el mismo número de columnas.
3.       Cada columna con su relativa columna deben ser tipos de datos compatibles.
4.       La cláusula ORDER BY puede usarse únicamente al final de la consulta.

UNION

Combina los resultados de dos o más consultas en un solo conjunto de resultados que incluye todas las filas que pertenecen a las consultas de la unión.

SELECT A, B,FROM TABLA1
UNION
SELECT A, B,FROM TABLA2
Una variante es UNION ALL  que agrega todas las filas a los resultados. Incluye las filas duplicadas. Si no se especifica, las filas duplicadas se quitan.
SELECT A, B,FROM TABLA1
UNION ALL
SELECT A, B,FROM TABLA2



INTERSECT

Devuelve los valores distintos de la consulta inicial que corresponda con la siguiente consulta.  Es decir los valores en común que tengan ambas consultas.
SELECT A, B,FROM TABLA1
INTERSECT
SELECT A, B,FROM TABLA2

EXCEPT
Devuelve los valores distintos de la consulta inicial que no se devuelven desde la consulta siguiente.   Es decir en dependencia de la ubicación de la consulta nos regresara los valores que no se encuentren la siguiente.
SELECT * FROM t1
EXCEPT
SELECT * FROM t2
Sera distinto los resultados para la siguiente consulta:
SELECT * FROM t2
EXCEPT
SELECT * FROM t1

DIFERENCIA SIMETRICA
Como lograriamos esta consulta?

Pudiésemos usar NOT IN para ello
SELECT A
     FROM Tabla1
     WHERE A NOT IN(SELECT A FROM Tabla2)
     UNION
     SELECT A
     FROM Tabla2
     WHERE A NOT IN(SELECT A FROM Tabla1)

O bien lo hariamos con la combinacion de los operadores antes vistos:

 SELECT A FROM TABLA1
     UNION
 SELECT A FROM TABLA2
     EXCEPT
 SELECT A FROM TABLA1
     INTERSECT
 SELECT A FROM TABLA2

Tipos de JOIN en T-SQL

INNER JOIN
Permite combinar 2 o más tablas a través de al menos un campo en común.    Es la unión natural entre las tablas.   Los resultados son los datos que tienen un común ambas tablas.
SINTAXIS
SELECT * FROM TABLA1 T1 INNER JOIN TABLA2 T2 ON T1.CampoA = T2.CampoA


LEFT OUTER JOIN
Permite hacer una mezcla y conservar todos los valores de la tabla izquierda (la primera tabla que se menciona en la consulta) sin importar que no tengan equivalente con la de la derecha.  Los resultados serán siempre todos los registros de la tabla izquierda TABLA1  sin que exista coincidencia en la otra tabla TABLA2. 
SINTAXIS
SELECT * FROM TABLA1 T1 LEFT OUTER JOIN TABLA2 T2 ON T1.CampoA = T2.CampoA


RIGHT OUTER JOIN
Permite hacer una mezcla y conservar todos los valores de la tabla derecha (la segunda tabla que se menciona en la consulta) sin importar que no tengan equivalente con la primera.  Los resultados serán siempre todos los registros de la tabla derecha TABLA2 sin que exista coincidencia en la otra tabla TABLA1.   
SINTAXIS
SELECT * FROM TABLA1 T1 RIGHT OUTER JOIN TABLA2 T2 ON T1.CampoA = T2.CampoA


CROSS JOIN
Nos permite hacer un producto cartesiano entre las tablas que estamos comparando.   Es una multiplicación de ambas tablas.   Se puede realizar de manera normal o bien de manera implícita.
---CROSS JOIN NORMAL
SELECT * FROM Tabla1 CROSS JOIN Tabla2

---CROSS JOIN IMPLICITO
SELECT * FROM Tabla1 ,Tabla2 

FULL OUTER JOIN
Es la combinación completa. Nos permitirá hacer una mezcla total y conservar todos los valores de ambas tablas, los valores que no tengan equivalencia aparecerán acompañados de un NULL y se mostraran todos los registros.
 SELECT * FROM Tabla1 FULL OUTER JOIN Tabla2 ON Tabla1.CampoA = Tabla2.CampoA

viernes, 16 de septiembre de 2011

Funciones y Expresiones mas comunes en Access 2007

domingo, 4 de septiembre de 2011

jueves, 1 de septiembre de 2011

Importar Datos a PostgreSQL desde Excel

1. Debemos generar un archivo .CSV (separado por comas). Debera de tener la misma cantidad de columnas que la tabla destino. No se debera poner titulo a cada columna.
2. Renombar el archivo .CSV a la extension .TXT
3. Copiar el archivo .TXT a la carpeta DATA de nuestro server PostgreSQL. En windows la ruta seria la siguiente: C:\Archivos de Programa\PostgreSQL\8.4\data
4. Ejecutar la siguiente instruccion SQL:

COPY Clientes FROM 'Clientes.txt' USING DELIMITERS ','