Upload
diego-rivas
View
6
Download
1
Embed Size (px)
Citation preview
/************************************ USO DEL CASE *********************************/
--ALTERNATIVA 1
SELECT t1.campo1 AS t1a, t1.campo2 AS t1b,
CASE
WHEN campo2 LIKE 'a%' THEN 'comienza con A'
WHEN campo2 LIKE '%a' THEN 'termina con A'
ELSE ''
END descrip –-se le pone alias a ese campo
FROM Tabla1 t1
--ALTERNATIVA 2
SELECT t1.campo1 AS t1a, t1.campo2 AS t1b, t1.campo3,
CASE campo3
WHEN 1 THEN 'es 1'
WHEN 2 THEN 'es 2'
ELSE 'es otra cosa'
END descrip
FROM Tabla1 t1
/************************************* REUNIONES ***********************************/
/****************************** REUNIONES INTERNAS *********************************/
--todos los registros emparentados
SELECT *
FROM Tabla1, Tabla2
WHERE Tabla1.campo1 = Tabla2.campo4 --esta no es una condición de filtrado
--es una condición de reunión: PK = FK correspondiente
SELECT campo1, campo2, campo1, campo2 --hacemos proyección
FROM Tabla1, Tabla2
WHERE Tabla1.campo1 = Tabla2.campo4
SELECT Tabla1.campo1 AS a, Tabla1.campo2 AS b,Tabla2.campo1, Tabla2.campo2 AS t2c
FROM Tabla1, Tabla2
WHERE Tabla1.campo1 = Tabla2.campo4
ORDER BY Tabla2.campo2
--uso del alias de tabla
SELECT t1.campo1, t1.campo2, t2.campo2
FROM Tabla1 t1, Tabla2 t2
WHERE t1.campo1 = t2.campo4
--usando alias de campo y alias de tabla
SELECT t2.campo2 AS t2a, t1.campo1 AS t1a, t1.campo2 AS t1b
FROM Tabla1 t1, Tabla2 t2
WHERE t1.campo1 = t2.campo4
ORDER BY t2.campo2 DESC, t1.campo1 DESC /*se puede usar el nombre real del campo:
t2.campo2, o el alias que le hayamos puesto t2a*/
--versión estándar de la reunión interna
SELECT t1.campo1 AS t1a, t1.campo2 AS t1b, t2.campo2 AS t2c
FROM Tabla1 t1 INNER JOIN Tabla2 t2
ON t1.campo1 = t2.campo4 --condición de reunión
SELECT t1.campo1 AS t1a, t1.campo2 AS t1b, t2.campo2 AS t2c --proyección
FROM Tabla1 t1, Tabla2 t2
WHERE (t1.campo2 LIKE '%a' OR t1.campo2 LIKE '%b') --condición de filtrado
AND t1.campo1 = t2.campo4 --condición de reunión
SELECT t1.campo1 AS t1a, t1.campo2 AS t1b, t2.campo2 AS t2c
FROM Tabla1 t1 INNER JOIN Tabla2 t2
ON t1.campo1 = t2.campo4 --condición de reunión
WHERE t1.campo2 LIKE '%a' OR t1.campo2 LIKE '%b' --condición de filtrado
/****************************** REUNIONES EXTERNAS *********************************/
/** REUNIÓN EXTERNA POR LA IZQUIERDA **/ --todos los papás, tengan o no hijos
--versión no estándar:
SELECT t1.campo1 AS t1a, t1.campo2 AS t1b, t2.campo2 AS t2c, t2.campo1
FROM Tabla1 t1, Tabla2 t2
WHERE t1.campo1 *= t2.campo4 --condición de reunión
--versión estándar:
SELECT t1.campo1 AS t1a, t1.campo2 AS t1b, t2.campo2 AS t2c
FROM Tabla1 t1 LEFT JOIN Tabla2 t2 ON t1.campo1 = t2.campo4 --condición de reunión
SELECT t1.campo1 AS t1a, t1.campo2 AS t1b, t2.campo2 AS t2c
FROM Tabla1 t1 LEFT JOIN Tabla2 t2 ON t1.campo1 = t2.campo4 --condición de reunión
WHERE substring(t1.campo2,1,1) <= 'c' --condición de filtrado
SELECT t1.campo1 AS t1a, t1.campo2 AS t1b, t2.campo2 AS t2c
FROM Tabla1 t1, Tabla2 t2
WHERE substring(t1.campo2,1,1) <= 'c' --siempre se ponen primero las condiciones
AND substring(t2.campo2,1,1) = 'z' -- de filtrado
AND t1.campo1 *= t2.campo4 –y luego las condiciones de reunión
/** REUNIÓN EXTERNA POR LA DERECHA **/ --todos los hijos, tengan o no papá
--versión no estándar
SELECT t2.campo1 AS t2a, t2.campo2 AS t2b, t4.campo2 AS t4c
FROM Tabla2 t2, Tabla4 t4
WHERE t2.campo1 =* t4.campo3
--versión estándar
SELECT t2.campo1 AS t2a, t2.campo2 AS t2b, t4.campo2 AS t4c
FROM Tabla2 t2 RIGHT JOIN Tabla4 t4
ON t2.campo1 = t4.campo3
SELECT t2.campo1 AS t2a, t2.campo2 AS t2b, t4.campo2 AS t4c
FROM Tabla2 t2 RIGHT JOIN Tabla4 t4
ON t2.campo1 = t4.campo3 --condición de reunión
WHERE substring(t4.campo2,1,1) <= 'c'
SELECT t2.campo1 AS t2a, t2.campo2 AS t2b, t4.campo2 AS t4c
FROM Tabla2 t2, Tabla4 t4
WHERE substring(t4.campo2,1,1) <= 'c' AND t2.campo1 =* t4.campo3
/**** REUINION ENTRE MÁS DE DOS TABLAS ****/
--versión no estándar
SELECT t1.campo1 AS a, t1.campo2 AS b,
t2.campo1 AS c, t2.campo2 AS d,
t4.campo1 AS e, t4.campo2 AS f
FROM Tabla1 t1, Tabla2 t2, Tabla4 t4
WHERE t1.campo1=t2.campo4 --reunión de t1 con t2
AND t2.campo1=t4.campo3 --reunión de t2 con t4
--versión estándar
SELECT t1.campo1 AS a, t1.campo2 AS b, t2.campo1 AS c,
t2.campo2 AS d, t4.campo1 AS e, t4.campo2 AS f
FROM Tabla1 t1 INNER JOIN Tabla2 t2
ON t1.campo1=t2.campo4 INNER JOIN Tabla4 t4 ON t2.campo1=t4.campo3
/**** RELACIONES RECURSIVAS ****/
SELECT a.campo1 AS codJefe, a.campo2 AS nomJefe,
b.campo1 AS codEmp, b.campo2 AS nomEmpleado
FROM Tabla5 a, Tabla5 b
WHERE a.campo1 = b.campo3
SELECT b.campo1 AS codEmp, b.campo2 AS nomEmpleado,
a.campo1 AS codJefe, a.campo2 AS nomJefe
FROM Tabla5 a, Tabla5 b
WHERE a.campo1 = b.campo3