Saltar al contenido

Volvemos a temas de la certificación 70-461 de SQL Server.

El operador APPLY permite invocar una función con valores de tabla para cada fila devuelta por una expresión de tabla externa de una consulta.

Es decir, que es muy parecido a una cláusula de JOIN y permite la unión de dos tablas.

La diferencia es cuando se tiene una expresión con valores de tabla en el lado derecho y desea que esta expresión  se evalúe para cada fila de la  tabla izquierda. El resultante es  el conjunto de  las columnas seleccionadas de la tabla izquierda seguido de todas las columnas de la derecha expresión de tabla.

Hay 2 formas: CROSS APPLY  y OUTER APPLY.

CROSS APPLY es cuando coincide valores en las 2 tablas.

OUTER APPLY devuelve todo y si no coincide devuelve valores NULL.

Se utiliza con el FROM.

Vamos a crear una funcion que nos de los tres principales productos que se venden en función del valor total de las ventas para el cliente.

Captura

Ahora vamos a ver las 2 ultimas ordenes con CROSS APPLY.

Captura

y si ahora camibamos el CROSS por el OUTER.

Captura

A simple vista da lo mismo peo habría que ver el resto de registros.

Para que lo probéis, ir a http://1drv.ms/1crfZRJ

La estructura de DocumentDB, ya iremos haciendo cosas de cada apartando.

intro

No voy a ver temas teóricos sobre esta Base de Datos NoSQL  ya que me extendería mucho. os dejo un link para que le echéis un vistazo.

https://azure.microsoft.com/en-us/documentation/articles/documentdb-introduction/

1

Es un de las novedades que trae la nueva versión de SQL Server 2016.

Captura

Primero hemos ejecutado el script para crear la bbdd tsql2012 y sus respectivas tablas.

Ahora vamos a utilizar una tabla como ejemplo

CapturaBueno ya tendriamos el JSON.

Captura

Ahora toca hacer un copy/paste a DocumentDB.

Despues de crear la BBDd en DocumentDB como TSQL2012, hayr que crear la colección que en este caso los llamaremos como se llamaba en SQL Server HR.Employees.

Captura

Damos en Colecciones y no sale una ventana al lado

CapturaAñadir colección, que seria nombre de la tabla en SQL Server.

Y desues pulsamos en:

Captura

CapturaCrear documento.

Captura

Guardar

Si queremos ver lo que hemos grabado, vamos al explorador de consulta

CapturaPues ya estaria, en un próximo artículo veremos como añadimos documentos de forma masiva.

1

Me llego una pregunta por la opcion de comentarios

CapturaVamos a resolverla.

Intersect recupera los valores iguales en el conjunto de la izda y dcha.
Inner join es igual pero tambien te pilla los duplicados … atencion a los null 😉 por lo que tendriasmos que poner un distinct.

Eso en cuanto a teoría, vamos con la práctica.

Captura

Como podéis ve sale en el inner join repetidos. En este caso no teniamos null.

Si le ponemos distinct al inner join.

Captura

Aquí teneis el archivo para ejecutarlo: http://1drv.ms/1GL5Mfm

Creo que lo he explicado bien, si tu ves otra forma, ya sabes  ... ponerla en comentarios

Ya se puede ir probando la nueva versión de SQL.

Se puede descargar desde:

https://technet.microsoft.com/en-gb/evalcenter/mt130694.aspx?f=255&MSPPError=-2147217396

vCaptura

Voy a ir probando con los siguientes artículos que os muestre en este blog.

sql2016

Que mejor forma de evaluar, que ir escribiendo artículos ...

sql2016

Vamossssss

DocumentDb es una base de datos basado en documentos que se ofrece como servicio en Azure.

Es una BBDD no relacional (NoSQL) que almacenan los datos en documentos basados en JSON. Es decir, dentro de DocumentDb hay una serie de colecciones de objetos en formato JSON para almacenar los objetos.

Iremos llevando en este blog las 2 bbdd, MongoDB (Proximamente en Azure también) y DocumentDB.

JSON es un estándar abierto que permite guardar  objetos que pueden ser leído por seres humanos.

Lo primero que tenemos que crear es la bbdd.

Captura

Crear

Captura

Tarda unos 10 minutos.

Captura

Le damos un nombre, en este caso vamos a hacer una Agenda.

En próximo artículo crearemos los documentos.

Espero que os haya gustado.

3

Si hacemos un Intersect aparecerá lo común de las 2 tablas, Except lo distinto, es decir,aparecen en la consulta las filas de la primera consulta que no aparecen en la segunda.

Tiene las mismas condiciones que la clausula UNION.

Vamos a ellos

Captura

Vemos al acer el INTERSECT que  nos muestra la información en comun de las tablas, las de clientes y proveedores

Y si ahora cambiamos por EXCEPT.

Captura

Nos mostrará la información que no tienen en común.

Facíl ??? Cualquier pregunta la podeís hacer en el grupo de facebook.

Los ejemplos aqui ... http://1drv.ms/1AufamO

Próximo artículo APPLY

Un snapshot es un punto de restauración que le hacemos a la maquina. Es muy importante hacerlo de vez en cuando sobre todo si estamos probando cosas. Así nos quitamos de volver a montar la maquina desde cero

Entramos en la VM en cuestión

Captura

Capture

Captura

Detenemos la VM y hacemos el snaptshot. Podemos poner un comentario que nos facilite a la hora de restaurar este punto.

Captura

Para ver donde esta:

Captura

Captura

 

 

1

El operador UNION permite combinar filas de una tabla con filas de otra.

Captura

Hay que tener en cuenta que las dos tablas tienen que tener el mismo esquema  y que la consulta tiene los encabezados de la primera tabla como podemos ver.

En el ejemplo vemos que aparece ordenador por la columna país, pero si queremos ordenarla por ciudad tenemos que hacer lo siguiente

Captura

Si utilizamos UNION ALL devuelve todas las filas resultante de la unión incluidas las repetidas.

Captura

y si ponemos un ORDER BY.

Captura

Ahora si vemos los valores repetitivos.

Si quieres practicar estos ejemplos, que tenéis los scripts http://1drv.ms/1LzSLVn

Lo siguiente .... EXCEPT  e INTERSECT

Como dice Microsoft:

"Una expresión de tabla común (CTE) se puede considerar un conjunto de resultados temporal que se define en el ámbito de la ejecución de una instrucción única SELECT, INSERT, UPDATE, DELETE o CREATE VIEW. Una CTE es similar a una tabla derivada en que no se almacena como un objeto y dura sólo el tiempo que dura la consulta. A diferencia de una tabla derivada, una CTE puede hacer referencia a sí misma y se puede hacer referencia a ella varias veces en la misma consulta".

Vamos con el ejemplo inicial.

Captura

Como vemos es como trabajar con subconsultas pero de una forma de que se puede reutilizar el código.

El script: http://1drv.ms/1FzKa3J

De momento, puede valer. Ya profundizaremos en el tema..

2

Son tablas derivadas a las subconsultas cuando les damos un nombre y son usadas en cláusula FROM.

Vamos con una ejemplo.

Captura

Este ejemplo recupera información sobre los pedidos realizados por los clientes por distintos año.

Podemos utilizar alias en este tipo de consultas como podéis ver.

Captura

Tambien le podemos pasar datos o argumentos.

CapturaPrimero declaramos la variable con un número de empleado. A continuación se lo pasamos como argumento a la tabla derivada.

Los códigos: http://1drv.ms/1ITWf7v

Os parece raro los pantallazos que he puesto en este artículo y es por que me esta dando problemas el Management Studio estos días. Espero solucionarlo. De omento me sirve el Visual Studiio.

 

Ya hemos visto la teoría, ahora la práctica.

Nosotros para ver, por ejemplo, nuestros 5 productos mas caro que tenemos en nuestro almacén lo podemos hacer de la siguiente forma.

Captura

Ese 5 lo podemos cambiar por cualquier otro número.

Que pasaría si queremos hacer una funcion para ver en cualquier momento los  n productos mas caros y que nos valga para todos ls casos. En este caso la utilización de TOP no nos valdría.

Tampoco valdría hacer una vista, ya que la vista se especificaría una opción y tendriamos que hacer tantas vistas como números de ranking.

Vamos a utilizar una TVF y cuando la llamemos le pasamos un número de ranking.

Captura

Ya la tenemos, ahora  la tenemos que llamar

Captura

 

Senvillo ????

Aquí teneis el código http://1drv.ms/1SdGQSs

Vamos a por las Tablas Derivadas.