2
/************************************ 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

DML Consultas

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