Curso SQL: Triggers

En una nota pasada hablamos sobre los procedimientos almacenados que se pueden usar en SQL, pueden revisar la información aquí antes de leer esta nota para tener una mejor idea de lo que se explicará.

En esta ocasión explicaremos el uso de los triggers, también conocidos como disparadores o desencadenadores, estos son un tipo de procedimiento almacenado especial que se ejecuta de manera automática cuando sucede un evento específico en el servidor de base de datos.

Existen 3 distintas categorías de triggers:

  • Trigger DML: se ejecutan cuando un usuario  intenta modificar datos mediante un evento de lenguaje de manipulación de datos (DML). Estos eventos son instrucciones INSERT, UPDATE o DELETE de una tabla o vista.
  • Trigger DDL:  se ejecutan en respuesta a una variedad de eventos de lenguaje de definición de datos (DDL). Estos corresponden principalmente a instrucciones CREATE, ALTER y DROP de Transact-SQL, y a determinados procedimientos almacenados del sistema que ejecutan operaciones de tipo DDL.
  • Trigger Logon:  se activan en respuesta al evento LOGON que se genera cuando se establece la sesión de un usuario.

En pocas palabras, un trigger es diseñado para comprobar o cambiar los datos con base en una instrucción de modificación o definición de datos; no debe devolver datos al usuario por lo que se aconseja no incluir en un trigger instrucciones SELECT que devuelven resultados ni las instrucciones que realizan una asignación variable.

Triggers en SQL

Creación de triggers

La estructura de la instrucción para la creación de un trigger es como sigue:

 CREATE TRIGGER  NombreTrigger ON {tabla | vista } [,...n] ]
      {FOR|AFTER|INSTEAD OF} {[INSERT][,][UPDATE][,][DELETE]} 
      AS sentencia_sql  [;] [,...n ] 

 

Colocamos la sentencia para crear el trigger CREATE TRIGGER seguido del nombre que queramos y señalamos la tabla o vista en la que será aplicable. Esta sentencia debe ser la primera en el lote a ejecutar.

Siguiendo eso se debe colocar el tipo de instrucción de modificación que activará el trigger ya sea INSERT, DELETE, UPDATE o combinaciones de estas.


AFTER
indica que el trigger sólo se activa cuando todas las operaciones especificadas en la instrucción SQL desencadenadora se han ejecutado correctamente.

INSTEAD OF indica que se ejecuta el trigger en vez de la instrucción SQL que provocó su activación, por lo que se suplantan las acciones de las instrucciones desencadenadoras.

Las siguientes instrucciones Transact-SQL no están permitidas en un desencadenador DML:

ALTER DATABASE, CREATE DATABASE, DROP DATABASE.

 

Con esto, veamos un ejemplo concreto de un trigger:


CREATE TRIGGER trVentaD ON VentaD FOR INSERT

AS

BEGIN

DECLARE @Cantidad INT

SELECT @Cantidad=Cantidad FROM INSERTED

    IF @Cantidad < 2

    BEGIN

          PRINT 'La cantidad mínima de venta son 2 artículos'

          ROLLBACK TRANSACTION

 END

END

 

Dicho trigger se ejecuta en caso de que una venta se lleve a cabo que cuente con menos de 2 artículos en cantidad. Por ejemplo, la siguiente instrucción activaría nuestro trigger:


INSERT INTO VentaD (ID,Articulo,Cantidad,Precio,Impuestos)

VALUES(46827, 'MG-11/2CF', 1, 450.00, 45.00)

 

Ahora bien, se debe saber que si se desea modificar el contenido de un trigger, se puede hacer mediante la sentencia ALTER TRIGGER, sin embargo, si se quiere cambiar el nombre deberá eliminarse primero y volverse a crear, para eliminarlo es necesario usar DROP TRIGGER.


Deshabilitar y habilitar un Trigger

En ocasiones puede ser útil inhabilitar temporalmente un desencadenador sin que por ello suponga eliminarlo, para estos casos podemos utilizar la sentencia DISABLE TRIGGER.

Por ejemplo, para deshabilitar el trigger del ejemplo anterior sería como sigue:


DISABLE TRIGGER trVentaD ON VentaD

 

Además, si queremos deshabilitar todos los triggers en una base de datos es posible con la siguiente sentencia:


DISABLE TRIGGER ALL ON DATABASE

 

Ahora bien, para poder revertir lo que hemos hecho, basta con utilizar ENABLE TRIGGER de la siguiente manera:


ENABLE TRIGGER trVentaD ON VentaD

 

De la misma forma podemos habilitar todos los trigger en una base de datos así:


ENABLE TRIGGER ALL ON DATABASE

 


Eliminar un trigger

Como se había mencionado con anterioridad, si se necesita eliminar un trigger de manera permanente, se debe usar una sentencia DROP TRIGGER.

Siguiendo con nuestro ejemplo inicial, la manera de eliminarlo sería como sigue:


DROP TRIGGER trVentaD

 

Estas son las bases que se deben saber al momento de utilizar triggers en SQL, estos pueden llegar a ser muy útiles, sobretodo si su base de datos tiene mucha actividad sensible respecto a insertar, eliminar y actualizar registros ya que se pueden utilizar como validaciones como el ejemplo que manejamos en esta nota.

Desde algo tan simple como eso, hasta un trigger verificador que nos permita identificar si, por ejemplo, un registro de un correo electrónico es válido basándonos en su formato (que tenga el símbolo “@”, que tenga al menos un carácter “.”, etc.).

Por lo que el límite es solo el ingenio que el programador pueda tener, ya que estos procedimientos almacenados tan especiales pueden ser usados de muchas maneras.

Espero les sea de utilidad, experimenten que tan lejos pueden llegar con los triggers y si tienen alguna duda o cualquier comentario sobre el tema, podemos hablar de ello en la sección de los comentarios.

¡Nos leemos hasta la otra!


Referencias

Curso SQL: procedimientos almacenados

Un procedimiento almacenado (STORE PROCEDURE) está conformado por un conjunto de instrucciones Transact-SQL que definen un determinado proceso, este puede aceptar parámetros de entrada y devolver un valor o conjunto de resultados. Este procedimiento se guarda en el servidor y puede ser ejecutado en cualquier momento.

La diferencia entre los procedimientos almacenados y las instrucciones SQL o lotes de estas reside en que los procedimientos están precompilados. De esta manera la mayor parte del trabajo de procesamiento de consultas ya está hecho y almacenado en una tabla del sistema por lo que el uso de procedimientos almacenados mejora notablemente la potencia y eficacia del SQL.

Hay algunos procedimientos incorporados del sistema en la base de datos master, todos tienen antes de su nombre las letras “sp_” y por lo regular se intenta que los procedimientos creados por usuarios sigan una regla similar para nombrarlos pero no exactamente igual para no confundirlos.

Los procedimientos almacenados se crean mediante la sentencia CREATE PROCEDURE y se ejecutan con EXEC (o EXECUTE). Para ejecutarlo también se puede utilizar el nombre del procedimiento almacenado sólo, siempre que sea la primera palabra del lote.


Crear y ejecutar un procedimiento

Para crear un procedimiento almacenado como hemos dicho se emplea la instrucción CREATE PROCEDURE:

CREATE PROCEDURE:

CREATE {PROC|PROCEDURE} 
[NombreEsquema.]NombreProcedimiento          
[{@parametro tipo} [VARYING] [= valorPredet]  [OUT|OUTPUT] ] [,...n]     AS
{  
   <bloque_instrucciones> [ ...n]
}[;]     

<bloque_instrucciones> ::=   
{
   [BEGIN] instrucciones [END]
}

Las instrucciones CREATE PROCEDURE no se pueden combinar con otras instrucciones SQL en el mismo lote.

Luego del verbo se debe poner el nombre del procedimiento que no debe superar los 128 caracteres.

Además, se pueden declarar uno o más parámetros indicando para cada uno su nombre (debe de empezar  por arroba) y su tipo de datos, y opcionalmente un valor por defecto (=valorPredet) este valor será el asumido si en la llamada el usuario no pasa ningún valor para el parámetro. Un procedimiento almacenado puede tener un máximo de 2.100 parámetros.

Ahora bien, un ejemplo rápido de lo que hemos visto:

CREATE PROCEDURE  spHola_Mundo 
AS
PRINT ‘Hola Mundo’;     
GO

-Se indica “GO” para cerrar el lote que crea el procedimiento y empezar  otro lote.

EXEC spHola_Mundo;

-De esta forma llamamos al procedimiento y se ejecuta.

Este procedimiento lo que hace simplemente es imprimir en consola “Hola Mundo” cuando es llamado.

Ahora probemos con un parámetro de entrada (la frase que queremos que escriba).

CREATE PROCEDURE spDice_Frase  @frase CHAR(30)    
AS      
PRINT @frase;  
GO     
EXEC spDice_Frase ‘Mulieres es genial’;


Parámetros de salida

Un procedimiento puede hacer uso no solo de parámetros de entrada sino que también puede devolver datos y para ello se debe indicar al parámetro con la palabra OUTPUT o bien usando la instrucción RETURN.

Para ello hagamos un ejemplo:

CREATE PROC spUltimo_cumple @ofi  INT, @fecha DATETIME OUTPUT    
AS      
SELECT @fecha=(SELECT MAX(fechaNacimiento)  FROM empleados WHERE oficina=@ofi)

En el parámetro de fecha OUTPUT recopilamos entonces el último cumpleaños de los empleados registrados en la oficina que indiquemos en el parámetro de entrada.

En la llamada, para los parámetros de salida, en lugar de indicar un valor de entrada se indica un nombre de variable, misma que recogerá el valor devuelto por el procedimiento sin olvidar la palabra OUTPUT:

DECLARE @cumple AS DATETIME;   
EXEC spUltimo_cumple 12,@cumple  OUTPUT;   
PRINT @cumple;

Además existe la instrucción RETURN que ordena salir de un procedimiento en cualquier punto en que esta instrucción se encuentre. Así bien, se utiliza para devolver valores al final o quizás en alguna consulta intermedia de algún procedimiento.

Pero algo importante a resaltar es que RETURN no puede regresar un valor NULL ya que de intentarlo saltará un mensaje de error y advertencia.

Supongamos que queremos saber el número de clientes en cierto municipio, con este procedimiento con RETURN se puede hacer de la siguiente manera:

CREATE PROC spClientesTotales @municipio INT   
AS    
RETURN (SELECT COUNT(*) FROM  clientes WHERE municipio=@municipio)   
GO

O bien asignar el resultado de la consulta a una variable y devolver la variable.


Insertar datos con INSERT EXEC

Con esta instrucción se pueden insertar los datos resultantes de un procedimiento en una tabla destino que se especifique.

Primeramente creamos nuestro procedimiento que en este caso recopila todas las ventas (pedidos) hechas a un país que es un parámetro de entrada:

CREATE PROCEDURE spVentasPorPais @paisOrden AS VARCHAR(15)
AS
SELECT id, empid, fechaOrden, pais, art FROM Ordenes WHERE pais = @paisOrden;

Necesitamos entonces ejecutar el siguiente código para que el conjunto de resultados de la consulta sea insertado en la tabla MisOrdenes.

SET IDENTITY_INSERT MisOrdenes ON;


INSERT INTO MisOrdenes(id,empid,fechaOrden,pais,art)
EXEC spVentasPorPais @pais = ‘España’;


SET IDENTITY_INSERT MisOrdenes OFF;

Esto puede resultar útil en ciertas ocasiones, no siempre es lo más utilizado pero es mejor saber todas nuestras opciones y que cada uno decida el mejor camino a seguir.


Eliminar y alterar un procedimiento

Por último, a veces puede suceder que necesitemos alterar o incluso eliminar un procedimiento que con anterioridad hemos creado y eso es de lo más normal.

Para eliminar un procedimiento se debe usar la siguiente sentencia:

DROP PROCEDURE spVentasPorPais;

Mientras que para alterarlo podemos usar lo siguiente:

ALTER PROCEDURE spVentasPorPais

Y posteriormente escribir el procedimiento como si lo estuviésemos creando, es decir que al ejecutar dicha instrucción se “borrará” el anterior procedimiento y se reemplazará con el nuevo que hemos escrito.

No cabe duda que en el mundo de SQL los procedimientos almacenados son muy populares y utilizados, por lo que entender las bases es esencial.

Por la lección de hoy ha sido todo, pero si tienen alguna duda respecto al tema o sugerencias de conceptos y ejemplos de SQL que podemos abordar son bienvenidas en la sección de comentarios.

¡Nos leemos hasta la otra!

Referencias

https://www.w3schools.com/SQl

Documentación sobre SQL de Microsoft: https://docs.microsoft.com/en-us/sql

Imagen modificada: https://www.entechnie.com/wp-content/uploads/2017/05/SQL_Server.jpg

3 Youtubers que deberías conocer si eres otaku

Hoy en día la plataforma de Youtube es algo que viene incluído en cualquier celular, tablet o incluso como sugerencia en los navegadores de Internet. Ha crecido tanto en los últimos años que es un poco difícil descubrir creadores de contenido que te puedan llegar a interesar tan fácilmente.

Por un lado Youtube tiene su sección de populares e incluso categorías pero a veces eso no es lo que nos puede llegar a convencer de pasarnos horas viendo el contenido de un canal. La sección de recomendados cuando estás viendo videos de algún youtuber que sigues sería la mejor opción para encontrar nuevos canales pero a veces necesitas un poco más que solo convencerte con una miniatura o título de un vídeo.

Es aquí donde entran las recomendaciones de personas que conoces, amigos o familiares, ya sea directamente o por que compartieron un vídeo de un canal en sus redes sociales. Y es justo aquí donde esta nota entra, ya que pasó un buen rato poniéndome al corriente con el contenido que suben los creadores a los que sigo así que creo con total seguridad poder recomendarles a 3 youtubers que me parecen geniales en el ámbito otaku o geek.

 

iLuTV

iLuTV

iLuTV

De la lista es el que más suscriptores tiene llegando casi al medio millón y su canal está dedicado a todo lo que tenga que ver con el anime y manga.

El contenido que crea va desde reseñas por capítulo hasta reseñas por animes y mangas completos, así como vídeos hablando de algún tema que tenga que ver con el mundo del manga y anime e incluso algunos vlogs personales en los que abre cajitas sorpresa con contenido anime o videos de preguntas y respuestas para interactuar con sus suscriptores.

Algo muy particular de su contenido es el nivel de edición que puede llegar a dedicarles y es que tiene unos vídeos espectaculares que le toman mucho tiempo de realización.

No se podría esperar menos ya que la carrera que estudió tiene que ver con la multimedia y la edición de efectos especiales, por lo que tiene un ojo muy bueno para los detalles.

Lo más importante de su contenido es la manera en la que ve al anime y el manga, realmente lo respeta como un arte y le interesa mucho la manera en la que los responsables hacen las cosas, poniendo un ejemplo simple: él es de esas personas que se fijan primero en sí el pasto o el mar están hermosamente animados/dibujados, si la escena animada es fluida y orgánica o si ese panel de manga tiene tal o cual trazo y lo que eso significa.

Si he llamado su atención un poco con esto entonces creo que es momento de que les hable del tipo de anime y manga que le interesan, que eso puede hacer que se interesen aún más o no.

Y la respuesta a eso es que le da una oportunidad a mucha variedad, cada temporada se hace una lista de animes por ver e intenta recibir las recomendaciones de su público. Pero sí les puedo decir que algunos de los animes que ama con pasión son: Haikyuu, Monogatari, Boku no hero, 3-gatsu no lion, Steins gate, entre muchísimos otros.  Lo que sí es importante resaltar es su amor eterno por las películas del Studio Ghibli.

Y en manga les puedo decir que le gusta Berserk, se ha enamorado recientemente de One piece, va al día con Shingeki no kyojin y hace no tanto ha dedicado un vídeo al de Slam dunk.

Quizás les suene un poco repetidos los géneros pero con casi 5 años en youtube, ha hecho muchos vídeos de muchos animes y mangas distintos por lo que echarse un clavado a su canal sería lo mejor.

Pasemos a la última etapa que es la interesante, les pondré a continuación un vídeo que ha hecho que es el inicio de una serie que finalizó hace poco y es que se ha puesto a leer el manga de One piece en 8 meses, cada mes subiendo 1 vídeo respecto a 10 tomos del manga, sus impresiones, los detalles que le habían gustado, entre otros comentarios que como fan de One piece, son un gusto escuchar:

De vez en cuando hace vídeos dedicados a un solo anime o manga y los reseña del tirón, es decir, se dedica a leerlos o verlos y al final hace el vídeo dando su reseña general y para que vean que si algo es genial, puede encontrarle el lado bueno a cosas que regularmente no son de su agrado, les dejo también este vídeo reseña:

Y por último para que conozcan rápidamente un poquito más su manera de ser, les dejo un vídeo de un unboxing de hace tiempo:

 

Vetrom

Vetrom

Vetrom

Nuestro siguiente youtuber no tiene la cantidad de suscriptores que el anterior pero su trabajo es de una grandísima calidad y merece todo el apoyo que nuevos seguidores le puedan dar.

Y es que su contenido es musical, así es, es un productor mayoritariamente de mixes instrumentales basadas en videojuegos, animes, películas, entre otros medios.

No solo eso, sino que produce música original y está en un proceso creativo para crear un nuevo álbum inspirado en Undertale y otro de Hatsune Miku. Ya que no solo crea vídeos que acompañan su música en youtube sino que cuenta con cuentas de iTunes, Spotify y algunas otras donde distribuye su arte y donde le pueden apoyar.

Algunos de sus gustos e intereses personales que le inspiran son en tema de videojuegos Undertale, Pokémon, Danganronpa y Nintendo en general, y en otros temas podemos incluir a Vocaloid (que es parte de sus inicios), películas Disney e incluso artistas como Taylor Swift ya que recientemente le ha dedicado un vídeo con un mix instrumental de su último álbum.

Como he mencionado antes, Undertale es un videojuego muy especial para Vetrom y no es para menos, ya que las instrumentales que creó le ayudaron a explotar y conseguir mayor número de suscriptores y vistas en su canal.

Tiene todo un álbum de Undertale que es genial y este es el momento en que empiezo a mostrarles un poco como es su trabajo con esta lista de reproducción del álbum:

De la variedad de vídeos de Undertale, dejando aparte el álbum, tengo una favorita que les quiero compartir y es que está excelente en todos los sentidos:

Si bien el siguiente vídeo que les quiero compartir no es algo que Vetrom siga haciendo, creo que es importante resaltar sus inicios componiendo con Vocaloid y como escritor de letras:

Ahora uno de mis favoritos de los que ha compuesto para el juego de The legend of Zelda BOTW, me encantan muchos de esa “saga” de vídeos pero este es el que me enamora:

Hay mucha variedad de instrumentales que ha compuesto y la verdad es que yo me escucho todas incluso cuando el material fuente me es desconocido, me encanta poner atención a los instrumentos que ha utilizado, el tipo de pista, incluso las imágenes, clips y transiciones que ha editado en el vídeo, y creo que un youtuber que sea capaz de hacer que te intereses por algo de lo que no tenías antes ni idea es digno de admirar.

Creo que un creador de contenido como este es algo que no se ve todos los días en youtube, por tanto necesitamos apoyarlo con todo lo que tenemos. Así que si les ha gustado su trabajo, además de suscribirse y ver sus vídeos, algo muy importante para cualquier creador de contenido pequeño es dar un poco más por lo que les aquí tienen rápidamente el enlace a su Patreon, plataforma en la que pueden apoyar a creadores de contenido que les gusten mes a mes para hacer de esto su profesión:

Patreon de Vetrom

 

Pikcal

Pikcal

Pikcal

 

Llegamos a la última de la lista, pero no por ello menos genial, se trata de Ina, una chica que lleva su canal de youtube dedicado a los videojuegos.

Apenas empezar, algo particular que debemos saber sobre ella es que le encantan los videojuegos retro y adora muchas de las franquicias de Nintendo, en especial Pokémon.

La manera en la que lleva su canal es mediante “series” de gameplays, este es un concepto sencillo que varios canales de videojuegos llevan a cabo. Se trata de videos de entre 15 a 30 minutos regularmente (no es regla, pueden ser de 1 hora o cuanto gustes) en los que se graba jugando al videojuego de turno, ya sea de manera normal, en modo difícil, con menos vidas de lo habitual o como se haya dicho que se iba a hacer.

Estas series durarán entonces el número de vídeos necesarios para terminar el videojuego o alcanzar el objetivo, que bien este podría ser otro como completar todos los desafíos o conseguir todos los objetos.

Pikcal cuenta con variedad de series de gameplays, una de sus secciones favoritas es justo la de los juegos retro, a pesar de no ser lo más popular en cuanto a gameplays en el mundo de youtube, ella los hace porque le encantan y los disfruta, eso es algo que siempre se agradece, por lo que aquí les dejo una lista de reproducción de unos gameplays retro del videojuego The legend of Zelda 2:

Otra de las secciones de su canal que es bastante popular es la de los Nuzlockes y Hardlockes de Pokémon. Esta es una modalidad de juego bastante entretenida ya que trata de pasarse la campaña regular de cualquier juego de Pokémon pero con algunas particulares reglas:

  • El primer pokémon que aparezca en una ruta es el único que se puede capturar, si se desmaya no tienes otra oportunidad de captura.
  • Si un pokémon tuyo muere, muere de verdad y no lo puedes volver a utilizar.
  • Dependiendo del youtuber, se puede hacer con vidas o sin vidas, es decir, se puede hacer teniendo 10 vidas disponibles y si mueren 10 pokémon entonces es game over.
  • No se pueden comprar objetos curativos más que los que encuentres por el camino.

Estas son algunas de las reglas básicas, al principio de cada serie se señalan las reglas que se seguirán, les dejo un ejemplo de un Hardlocke que hizo Pikcal de Pokémon Diamante:

Ina sube de vez en cuando vlogs de preguntas y respuestas o unboxings de cositas friki en los que podemos conocer un poco más de sus gustos y personalidad, aquí les dejo uno:

Cuenta con un canal de Twitch en los que hace directos de otros muchos juegos e interactúa con sus seguidores de manera más personal así que aquí se los dejo por si les interesa:

Twitch de Ina

Espero hayan notado que los canales recomendados son variados en cuanto a contenido y aún así pueden ser todos interesantes para los otakus, que nadie diga que no se puede consumir contenido variado y acorde a tus intereses.

Tengo ganas de escuchar sus opiniones respecto a estos 3 youtubers y que les den una oportunidad ya que son muy buenas personas que merecen ese apoyo, este día he querido darles un poco de reconocimiento pues me han dado contenido excelente durante ya varios años, desde aquí, enhorabuena a todos ellos por su maravilloso trabajo.

¡Nos leemos hasta la otra!

 

Referencias

Los respectivos canales de cada youtuber y edición de sus imágenes de perfil o miniaturas de vídeos:

https://www.youtube.com/user/iLuTV

https://www.youtube.com/user/VTMProjects

https://www.youtube.com/channel/UCZsDHQaurXFdbyx3bFitxjQ

 

Celebra el mes del Orgullo LGBT con estos mangas y manhwas

El mes de Junio es de lo más movido para todos los miembros de la comunidad LGBT ya que es el mes del orgullo, eso es algo de lo que ya les hablé hace 2 años en esta nota: Junio: mes del orgullo LGBT+

Por lo que en esta ocasión les quiero recomendar algunos mangas (japoneses) y manhwas (coreanos) que pueden leer para entrar un poco en el espíritu y conocer más acerca de las obras que tocan este tipo de temas.

En esta ocasión me centraré en mangas y manhwas yuri (relaciones entre chicas) ya que es el género que más suelo leer y del que creo mejores recomendaciones les podría dar.

Yagate Kimi ni Naru (Bloom into you)

Yagate kimi ni naru

Este es un manga que empecé a leer hace tiempo y con el cual estoy al día en las publicaciones en inglés, incluso está anunciado su anime para la temporada de otoño por lo que es bastante popular.

Su reseña es la siguiente:

Un amor especial que sea capaz de elevarte y a la vez hacerte sentir cálida, todo eso es lo que busca Koito Yuu. Con el nuevo año escolar comenzando y uniéndose como ayudante del consejo estudiantil, aprenderá todo lo que significa ser  una persona especial para alguien ya que Nanami Touko le confiesa su amor, una misteriosa y popular chica que casualmente también está dentro del consejo. Si bien Yuu indica no estar enamorada y no poder corresponderle. ¿Será Capaz Nanami de cambiar eso?

No quiero contarles demasiado para no arruinarles la historia, lleva aproximadamente 30 capítulos (2 más salen este mes) y es publicado por lo regular mensualmente.

Puedo decir que en partes me identifico mucho con la protagonista Yuu y su forma de ver el amor, algo dudosa y confusa, por lo que me parece interesante que no sea algo que haya visto o leído en algún otro lado lo cual hace al manga un poco más especial a pesar de estar desarrollado en un ambiente escolar.

Realmente espero su capítulo mes a mes ya que, además de su romance, aborda temas como la pérdida de un familiar y cómo esto afecta a sus seres queridos así como un amor no correspondido e incluso la forma en que los consejos escolares llevan a cabo sus actividades en Japón, entre otros.

Para que se den una idea del arte y dibujo, les dejo un PV subtitulado al inglés:

Y si bien lo mejor es apoyar este tipo de obras comprando el material original, es cierto que a veces no es posible pero ayuda mucho a la industria, si se pueden dar la oportunidad de leerlo en físico les dejo un enlace a Amazon del primer tomo:

Primer tomo de Bloom into you

Ahora bien, en caso de no poder adquirirlo pueden leerlo de manera online o descargando los capítulos de la página de manga de su preferencia, les dejo un enlace donde lo traducen al español:

Capítulos de Bloom into you en español

Este manga es para aquellos que como Yuu no saben precisamente lo que es el amor o no lo han sentido de la manera convencional que todas las historias predican, por supuesto que no todos tenemos a una Nanami que se haya cruzado por nuestras vidas así que acompáñenme a descubrir si Yuu cambia de opinión al pasar de los capítulos.

Miss Angel and Miss Devil

Miss angel and miss devil

Se trata de un manhwa sobre ángeles y demonios, como su nombre indica, y como pueden esperar, hay casos en los que un ángel se puede enamorar de un demonio.

Pero no todo es lo que parece por que hay ángeles que pueden ser realmente peligrosos y demonios que parecen totalmente inofensivos. Al final del día, tienen que tratar de convivir por el bien común (o eso se supone) y ponerse frente a las adversidades que su mundo les imponga.

Si no están acostumbrados a los manhwas, se podrían sorprender por que el estilo de viñetas es muy parecido a un 4-koma con pocos detalles en los fondos normalmente pero todos los capítulos son a color, lo que le da un buen toque y es distinto a los mangas. Debido a que su publicación suele ser de manera web, la publicación varía pero puede llegar a un par de capítulos por mes.

Volviendo al tema del manhwa en cuestión, les puedo decir que el mundo que se va descubriendo capítulo a capítulo es fascinante, no solo se trata de poner a ángeles y demonios y ya está. Todo tiene un sentido y un porqué, un antes y un después, causas y consecuencias que guían todo el flujo de la historia que si bien parece no tener un rumbo fijo, sabe hacia dónde se dirige con cada personaje y su trama individual y en pareja.

Algo que debo decir es que si no son fans de los flashbacks, deben tener en cuenta que la historia inicia en un punto y de vez en cuando se desvía para contar sucesos que suceden en el pasado o el futuro, igualmente es fascinante descubrir en qué punto está la historia en cada capítulo.

Los personajes son adorables y distintos entre sí por lo que te van a poder sacar unas buenas risas con sus ocurrencias y la manera en la que manejan las situaciones particulares en su mundo pero eso no quiere decir que sea solo miel sobre hojuelas porque las cosas se pueden poner serias de un momento a otro en un universo en que seres con poderes fantásticos son reales.

En mi caso particular, yo empecé a leerlo por el diseño de personajes y el romance pero me quedé por eso y por la curiosidad que despertó en mí sobre su universo y todos los elementos que lo componen, cada criatura, cada festividad, cada momento es algo digno de leer.

Si bien no hay PV en este caso, les traigo un vídeo de un fan para que se puedan dar una idea de los paneles y el coloreado de los capítulos:

Y en este caso solo se puede leer de manera online y ya que al menos yo no sé coreano, me veo obligada a seguirlo vía fansubs, les dejo un enlace donde lo traducen al español:

Capítulos de Miss Angel and Miss Devil

Cuenta con 58 capítulos y está actualmente en emisión por lo que hay mucho con lo que ponerse al corriente.

 

Blooming Sequence

Blooming sequence

Este manhwa es el que he descubierto más recientemente de los nombrados el día de hoy pero no por ello menos impresionante.

De hecho creo que de la lista es de los que más me emociona esperando capítulo a capítulo ya que trata un ambiente distinto a los escolares normales.

Se desarrolla en un ambiente universitario y gira en torno a un club de cine por lo que las referencias al mundo cinematográfico son varias y muy entretenidas de descubrir si es un tema que les gusta. De hecho el propio artista (no me ha quedado claro si es mujer o hombre) ha señalado en más de un final de capítulo que no es que sea un experto en cine sino que pide ayuda a unos amigos para que su contenido sea lo más fiel y acercado al tema posible, lo cual demuestra su dedicación por incluir de la mejor manera posible esta temática.

Pero en fin, hablando de la historia esta sería la sinopsis:

En la fiesta de apertura dada por diversas comunidades de la universidad, Seowoo se encuentra con la novata Ha Young que está algo ebria. Parece un encuentro acordado por el destino y desde ese momento Seowoo quiere volver a verle, casualmente, Ha Young formaba parte del club de cine de su anterior escuela por lo que se apunta al club de cine CineSo de esta universidad sin saber que Seowoo es la nueva apuntada presidenta.

Solo puedo decir que estoy enamorada del personaje de Seowoo, al tener una apariencia feroz da la impresión de ser violenta pero la verdad es que es muy amable, nerviosa y solo quiere llevarse bien con todos a pesar de que sufre rechazo debido a su ya mencionada apariencia. Mientras que Ha Young al ser la menor de las dos podría ser la inexperta, es exactamente lo opuesto pues ha vivido ciertas situaciones en su pasado que le impiden avanzar.

La manera en que se va desarrollando su relación y las adversidades a las que se enfrentan me parece mágico, no es todo color de rosas pues viven en una sociedad donde no es del todo aceptado las relaciones entre dos chicas como lo es Corea pero si tienen momentos bonitos que te hacen pensar que todo por lo que pasan vale la pena. También representan una buena manera de afrontar que quizás te pueda gustar alguien de tu mismo sexo, dos perspectivas distintas pero válidas para cualquiera que las pueda llegar a vivir.

Especialmente me gusta el diseño y el coloreado de los personajes y fondos, las sombras que se usan y en general el acabado tan lindo que tienen. Para que se den una idea, les dejo un vídeo de un fan con algunos paneles, si no quieren demasiados spoilers échenle un vistazo rápido:

Y por supuesto, les dejo el enlace en donde lo pueden seguir en español:

Capítulos de Blooming Sequence

Tiene actualmente 30 capítulos, está en emisión y al parecer va tomando un buen ritmo de publicación por lo que empezar a seguirla ahora es un buen momento.

Strawberry Shake Sweet

Strawberry shake sweet

Este manga es el único de la lista que no está en emisión actualmente puesto que ya ha terminado en tiempo y forma, y lo menciono de esta manera ya que hay muchos mangas y manhwas finalizados por razones nada agradables que más que finalizados podemos decir han sido cancelados.

Strawberry shake sweet es una hermosa historia y lo que yo consideraría ya un clásico ya que inició su publicación en 2003, si bien ya es algo improbable que alguna casa animadora le eche el ojo, yo sigo con esperanzas de ver su anime un dia.

Pero primero vamos a hablar un poco de su trama:

Julia Tachibana es una joven talento de la agencia Shanhai (idols), la historia comienza cuando su jefe le asigna una aprendiz: Ran Asakawa, una chica extranjera que de inmediato captará la atención de Julia convirtiéndose en su amor “secreto”, y quien posteriormente de igual forma comienza a sentir algo profundo por Julia aunque no sabe que es amor pues nunca lo ha sentido. Una comedia romántica imperdible.

Por lo que pueden leer, esta historia se desarrolla en otro ambiente poco común para este tipo de historias como lo es el mundo de las idols, si bien por su número de capítulos no profundiza demasiado, si podemos ver las reglas que deben acatar y el ritmo de vida que pueden llegar a tener debido a su éxito.

Si bien de igual forma trata algunos diversos temas, de las historias hoy mencionadas esta es la que más se acomoda al molde de “comedia romántica” pero no por ello es mala. Sus personajes son encantadores y con una actitud tan refrescante pues desde el inicio como lector sabes que Julia reconoce sus sentimientos pero lo interesante es ver cómo los controla e intenta hacer lo posible por no incomodar a Ran, por lo que no es tu típico “niego mis sentimientos por más de 20 capítulos hasta que pasa algo que me fuerza a revelarlos”.

El mundo de las idols en Japón no es sencillo y lograr mantenerse vigente es algo que requiere algo más que de suerte, luchar por ello y enamorarse de una compañera de trabajo a la vez puede ser de las situaciones más difíciles que enfrentan Julia y Ran.

Esta es una de las ocasiones en las que si bien me encanta Julia por siempre ver su perspectiva de las situaciones, estoy enamorada de Ran tanto por su diseño como por su manera inocente de ser en ocasiones y valiente en otras que se necesitan.

Al final de cuentas, hacen una excelente pareja y es un gusto ver cómo se desarrolla su relación y su entendimiento del mundo que les rodea.

Ahora bien, me ha costado, pero he encontrado un video de un fan para que puedan ver un poco el trazo del dibujo del manga, recuerden, si no quieren muchos spoilers solo echen un vistazo:

Al ser un manga un poco más viejo, encontrarlo en físico es difícil y aún más en algún idioma que entendamos así que les dejo el enlace para descargar los capítulos:

Capítulos de Strawberry Shake Sweet

Cuenta con 17 capítulos y 1 especial por lo que es algo que se puede leer rápidamente pero disfrutenlo lo más posible. En su día lo leí en emisión y puedo decir que hay algunos capítulos con buenos finales que te dejan con ganas de más, en su caso no van a tener problema con ello así que pásenlo bien.

Espero de verdad que alguno de los mangas y manhwas que he recomendado el día de hoy les hayan interesado, si son nuevos en este mundo son muy buenas historias para comenzar a sumergirse en el género y si ya leen yuri y no habían escuchado de estas historias entonces hoy fue su día de suerte.

Por último, espero todos disfruten del mes del orgullo asistiendo a los diversos eventos alrededor del mundo pero sobretodo recuerden cuidar de ustedes mismos y de los demás, tomen sus precauciones para que no suceda una tragedia y sean felices queriéndose a ustedes mismos.

¡Nos leemos hasta la otra!

 

Referencias

Información obtenida de las páginas proporcionadas con los capítulos de cada respectiva obra.

Imágenes editadas de los tomos o imágenes promocionales de cada obra.

SQL básico: consultas resumen

Bienvenidos de nueva cuenta al curso de SQL básico, ahora que somos todos unos expertos en el uso de consultas multitabla, vamos a explorar algunas funciones y cláusulas nuevas que nos permitirán usar la sentencia SELECT para obtener resúmenes de los datos contenidos en nuestras tablas.

Cabe aclarar que una diferencia importante entre las consultas resumen y las otras que hemos explorado hasta el momento es que en las consultas normales las filas del resultado se obtienen directamente de las filas del origen de datos y cada dato que aparece en el resultado tiene su dato correspondiente en el origen de la consulta mientras que las filas generadas por las consultas resumen no representan datos del origen sino un total calculado sobre estos datos.

Funciones de agregado

Una función de agregado  acepta un grupo de datos (por lo regular una columna de datos) como argumento, y produce un único dato que resume el grupo. Por ejemplo la función AVG() acepta una columna de datos numéricos y devuelve la media aritmética (average) de los valores contenidos en la columna.

Todas las funciones de agregado tienen una estructura parecida:

Función ([ALL|DISTINCT] expression)

 

El grupo de valores sobre el que actúa la función lo determina el resultado de la expresión que será simplemente un nombre de columna o una expresión basada en una columna o varias del origen de datos.

La palabra ALL indica que se tiene que tomar en cuenta todos los valores de la columna. Si no se especifica, este es el valor por defecto.

Mientras que la palabra DISTINCT hace que se consideren todas las repeticiones del mismo valor como uno sólo (considera valores distintos).

A excepción de la función COUNT, todas las funciones de agregado ignoran los valores NULL.

Función COUNT

Su estructura es como sigue:

COUNT ({[ALL|DISTINCT] expression | * } )

 

La expresión puede ser de cualquier tipo excepto text, image o ntext.

Como se mencionó anteriormente, esta función cuenta por defecto los valores NULL y se utiliza ALL y DISTINCT según las necesidades del programador.

Un ejemplo rápido sería el siguiente:

SELECT COUNT(Nombre) AS 'No. Proveedores' from Prov

SELECT COUNT(Nombre) AS 'No. Proveedores' from Prov

Uno pensaría que el resultado es realmente el número de proveedores que se tienen registrados en la respectiva tabla, sin embargo siempre existe un poco de error humano o algún otro contratiempo que haga que este valor no sea del todo cierto, por lo que para estar seguros que los registros contabilizados no están repetidos podemos hacer lo siguiente:

SELECT COUNT(DISTINCT Nombre) AS 'No. Proveedores' from Prov

SELECT COUNT(DISTINCT Nombre) AS 'No. Proveedores' from Prov

Como podemos notar, de alguna manera había ciertos valores repetidos y ahora realmente tenemos el número de proveedores (por nombre) que hay registrados en nuestra tabla.

Otra forma interesante de utilizar esta función es utilizando (*) en lugar de una expresión, de esta forma la función devuelve el número de filas del origen después de ejecutar la cláusula WHERE.

SELECT COUNT(*) AS 'Proveedores de Nuevo León' 

FROM Prov 

WHERE Estado='Nuevo Leon'

SELECT COUNT(*) AS 'Proveedores de Nuevo León' FROM Prov WHERE Estado='Nuevo Leon'

En este ejemplo contamos a todos los proveedores que son específicamente del estado de Nuevo León, de esta forma tenemos más opciones para diseñar estas consultas y que sean de mayor utilidad según se necesite.

 

Funciones MIN y MAX

Decidí agrupar estas 2 funciones en una sola sección ya que hacen cosas opuestas y tienen la misma estructura.

MAX/MIN ([ALL|DISTINCT] expression)

 

Mientras que la función MAX devuelve el valor máximo de la expresión, la función MIN devuelve el valor mínimo, en ambos casos sin considerar los nulos.

Ambas funciones se pueden usar con columnas numéricas, de caracteres y de datetime, pero no con columnas de bit.

A continuación, un pequeño ejemplo para cada función.


SELECT MAX(PrecioUnitario) AS 'Precio Máximo' FROM Art

SELECT MAX(PrecioUnitario) AS 'Precio Máximo' FROM Art

En este ejemplo tomamos de nuestra tabla de artículo la columna de precio unitario y consultamos el precio máximo registrado.

SELECT MIN(PrecioUnitario) AS 'Precio Mínimo' FROM Art

SELECT MIN(PrecioUnitario) AS 'Precio Mínimo' FROM Art

Ahora se trata del caso opuesto, buscando en nuestra tabla el registro del precio mínimo de los artículos.


Función SUM

SUM ([ALL|DISTINCT] expression ) 

 

Su nombre casi lo explica ya que devuelve la suma de los valores conseguidos con la expresión utilizada. En este caso solo es utilizable con columnas numéricas.

SELECT SUM(Importe) AS 'Total de Ventas' FROM Venta

SELECT SUM(Importe) AS 'Total de Ventas' FROM Venta

Se hace una sumatoria de todos los importes de todas las ventas y así se puede conseguir un total de las ventas registradas (sí, en esta base de datos de prueba hay muchos registros).

 

Función AVG

AVG ([ALL|DISTINCT] expression)

 

Esta función devuelve el promedio de los valores de un grupo, dicho esto, cabe mencionar que se omiten los valores nulos.

Las situaciones ya mencionadas con anterioridad respecto a las expresiones aplican de la misma forma para esta función.

SELECT AVG(cd.Cantidad*cd.Precio) AS 'CostoPromedio' FROM CompraD AS cd 

SELECT AVG(cd.Cantidad*cd.Precio) AS 'CostoPromedio' FROM CompraD AS cd 

Esta consulta nos permite saber el costo promedio por orden de compra y a diferencia de los ejemplos anteriores, esta vez utilizamos una expresión distinta a solo el nombre de la columna.

 

Cláusula GROUP BY (Agrupamiento de filas)

Si han prestado atención podrán haber notado que los ejemplos de las funciones se componen totales de todas las filas origen con una única fila como resultado, sin embargo, a menudo se requiere obtener totales parciales ya sea para saber qué tanto ha vendido un empleado en específico o cuál artículo es el más solicitado.

En caso de que se quiera obtener este tipo de resultados es necesario utilizar la cláusula GROUP BY.

Una consulta con una cláusula GROUP BY agrupa los datos de la tabla origen y produce una única fila resultado por cada grupo formado. Las columnas indicadas en el GROUP BY se llaman columnas de agrupación o agrupamiento.

Cuando queremos realizar una agrupación múltiple, por varias columnas, éstas se indican en la cláusula GROUP BY en el orden de mayor a menor agrupación igual que con la cláusula ORDER BY.


SELECT cd.ID,AVG(cd.Cantidad*cd.Precio) AS 'CostoPromedio'

FROM CompraD AS cd

GROUP BY cd.ID

Esta consulta nos permite saber el costo promedio por orden de compra y a diferencia de los ejemplos anteriores, esta vez utilizamos una expresión distinta a solo el nombre de la columna. Cláusula GROUP BY (Agrupamiento de filas) Si han prestado atención podrán haber notado que los ejemplos de las funciones se componen totales de todas las filas origen con una única fila como resultado, sin embargo, a menudo se requiere obtener totales parciales ya sea para saber qué tanto ha vendido un empleado en específico o cuál artículo es el más solicitado. En caso de que se quiera obtener este tipo de resultados es necesario utilizar la cláusula GROUP BY. Una consulta con una cláusula GROUP BY agrupa los datos de la tabla origen y produce una única fila resultado por cada grupo formado. Las columnas indicadas en el GROUP BY se llaman columnas de agrupación o agrupamiento. Cuando queremos realizar una agrupación múltiple, por varias columnas, éstas se indican en la cláusula GROUP BY en el orden de mayor a menor agrupación igSELECT cd.ID,AVG(cd.Cantidad*cd.Precio) AS 'CostoPromedio' FROM CompraD AS cd GROUP BY cd.ID

Utilizando parte de una consulta de ejemplo anterior, tenemos el costo promedio pero esta vez por cada orden de compra, de tal manera la información puede llegar a ser más útil.


Cláusula HAVING(Selección sobre grupos de filas)

Cuando se quiere utilizar una cláusula de selección sobre filas de origen utilizamos WHERE pero en el caso de las consultas resumen en donde manejamos grupos de filas tenemos la cláusula HAVING.

Funciona de la misma manera que WHERE pero en lugar de actuar sobre las filas del origen de datos, HAVING actúa sobre las filas del resultado.

Siempre que en una condición de selección haya una función de columna, la condición deberá incluirse en la cláusula HAVING, además, HAVING filtra filas del resultado así que sólo puede contener expresiones (nombres de columnas, expresiones, funciones…) que también pueden aparecer en la lista de selección, por lo que se aplica la regla a no olvidar:

En la cláusula HAVING un nombre de columna no puede aparecer fuera de una función de agregado si no es una columna de agrupación.


SELECT COUNT(vd.Articulo) AS ‘Artículos Registrados’,vd.ID

FROM ventaD AS vd

GROUP BY vd.ID

HAVING COUNT(vd.Articulo)  < 3

SELECT COUNT(vd.Articulo) AS 'Artículos Registrados',vd.ID FROM ventaD AS vd GROUP BY vd.ID HAVING COUNT(vd.Articulo) < 3

Con esta consulta podemos obtener no la cantidad de artículos por orden de venta sino que especificamos que solo queremos las órdenes de venta con su respectivo registro de artículos que sean menores a 3.

Sabiendo ahora la manera particular en que cada una de estas funciones y cláusulas actúa, podemos explorar una gran variedad de posibilidades al combinarlas y diseñar consultas que obtengan los resultados que deseamos.

Esto es todo por esta lección, en la siguiente nota explicaremos el tema de las subconsultas, algo interesante y que se llega a necesitar con bastante frecuencia ya que se trata de una consulta dentro de otra consulta pero eso ya lo veremos a profundidad el siguiente mes.

Si tienen alguna duda respecto al tema tratado o incluso de SQL básico en general, no duden en preguntar en los comentarios.

¡Nos leemos hasta la otra!


Referencias

https://www.w3schools.com/SQl

Documentación sobre SQL de Microsoft: https://docs.microsoft.com/en-us/sql

Imágenes de la nota: screenshots tomadas por la autora en SQL Server.

Imagen principal modificada pero inicialmente tomada de: https://www.campusmvp.es/recursos/image.axd?picture=SQL-Lenguaje_1.png

SQL básico: consultas multitablas

Bienvenidos de nueva cuenta al curso básico de SQL, si por alguna razón llegaste a esta nota al azar, te invito a seguir el curso desde el inicio de la serie aquí: SQL básico: conceptos básicos.

En esta ocasión continuaremos hablando de consultas que podemos hacer pero esta vez centrándonos en la manera en que se crean pensando en la conexión de datos entre distintas tablas.

Cabe aclarar que cuando menciono “tablas” me refiero tanto a las que se encuentran  físicamente almacenadas en la base de datos como también a las temporales e incluso a las que son resultantes de alguna vista o consulta.

 

Unión de tablas UNION

Consiste en tomar 2 tablas y por consiguiente obtener otra tabla que contenga las filas de las 2 tablas de manera que aparezcan las filas de la primera tabla seguidas de las filas de la segunda tabla.

Se debe de tener en cuenta que para hacer una unión así, ambas tablas deben tener el mismo esquema (mismo número de columnas y tipos de datos compatibles) y que luego de la unión la tabla resultante hereda los encabezados de la primer tabla.

Ahora bien, vamos directamente a un ejemplo para continuar explorando el uso de UNION en consultas:

SELECT Articulo AS 'Artículos'
FROM Art
UNION
SELECT Articulo
FROM ArtAlm

 

En el ejemplo tenemos la unión de la tabla Art con la tabla ArtAlm, tratándose de las tablas que manejan  los artículos y estos mismos en almacenes. En ambos casos se pide en la consulta los datos de los artículos y en el caso de la tabla Art, se utiliza un alias con la palabra “AS” para nombrar a la columna de otra forma de tal manera que al hacer la consulta la tabla resultante tenga ese nombre de columna.

 

Union en SQL

 

En caso de encontrarse con elementos repetidos, el sistema por defecto eliminará dichas filas. Si se necesitara obtener todas las filas, incluyendo las repeticiones, se puede utilizar “UNION ALL”, esto ocasiona que la consulta se ejecute un poco más rápido ya que el sistema no tiene que estar eliminando las repeticiones.

También se debe de tener en cuenta que se pueden combinar más de 2 tablas si es que se cumplen con todos los requerimientos  e igualmente se puede hacer uso de las cláusulas que expliqué en la segunda nota de la serie: SQL básico: consultas simples.

 

Diferencia EXCEPT

Continuando con la combinación de dos o más tablas, llegamos a la que nos permitirá hacer una operación similar a una diferencia matemática.

Por lo que la tabla resultante contiene las filas de la primera consulta que no aparecen en la segunda.

Como se trata de una operación muy sencilla de comprender, vamos a un ejemplo rápido:

SELECT Articulo
FROM Art
EXCEPT
SELECT Articulo
FROM ventaD

De nuevo vamos con la tabla Art que maneja los datos de los artículos con la tabla ventaD que maneja los datos de los detalles de las ventas que se realizan.

La estructura y condiciones como vemos son las mismas que con UNION, dos consultas separadas en este caso por la palabra EXCEPT que marca hacia que lado se efectuará la operación.

Except en SQL

Como podemos observar, la tabla resultante es simplemente de aquellos artículos que se encuentran en la tabla Art (primera consulta), pero que no se encuentran en la tabla ventaD (segunda consulta).

Este tipo de consulta puede ser útil si lo que queremos es por ejemplo averiguar los artículos que tenemos en existencia que no han sido registrados como ventas.

 

Intersección INTERSECT

Esta tiene un funcionamiento parecido a las anteriores pero en la tabla resultante tenemos las filas que están simultáneamente en las dos o más consultas que utilicemos.

SELECT Articulo
FROM Art
INTERSECT
SELECT Articulo
FROM ventaD 

Siguiendo por la misma línea que hemos estado utilizando en estos ejemplos, ahora tenemos de nueva cuenta a la tabla Art y a la tabla ventaD. En esta ocasión con la operación de intersección buscamos los artículos que se encuentran registrados a su vez en ambas tablas.

Intersect en SQL

Este tipo de consultas pueden servir como en el ejemplo, para obtener una lista de artículo que se encuentren tanto en nuestra lista de artículos usual como en las de los detalles de las ventas, es decir, los artículos de los que tenemos registradas al menos una venta.

Por lo que es bastante útil si tienes tablas con mucha información en común pero quieres depurar de alguna manera a la hora de hacer consultas.

 

Composición de tablas

Las consultas y operaciones que hemos realizado hasta ahora han sido con tablas que tuviesen el mismo esquema, sin embargo, hay ocasiones en las que se necesita obtener una tabla resultado que tenga en la misma fila datos de distintas tablas.

Por ejemplo se necesita obtener pedidos y en esa misma fila obtener algunos datos del cliente como nombre y dirección, este tipo de consultas es posible y de hecho son muy usadas.

Nos apoyaremos en la composición de tablas para poder lograr consultas de este tipo, esto consiste en obtener a partir de dos tablas cualesquiera una nueva tabla fusionando las filas de una con las filas de la otra, concatenando los esquemas de ambas tablas. Básicamente se trata de armar parejas de filas.

Ahora continuaremos con la operación a partir de la cual están definidas las demás operaciones de composición de tabla, se trata del producto cartesiano.


Producto cartesiano CROSS JOIN

Este obtiene todas las posibles concatenaciones de filas de la primera tabla con filas de la segunda tabla. Para poder utilizar el CROSS JOIN debemos indicarlo en la cláusula FROM entre los nombres de las tablas que se quieran concatenar.

SELECT a.*, vd.*
FROM Agente AS a
CROSS JOIN
ventaD as vd 

En esta ocasión utilizamos las tablas de Agente y la de ventaD, al utilizar el asterisco estamos señalando que queremos que nos traigo todas las columnas de dicha tabla y utilizamos de nueva cuenta el “AS” para indicar un alias esta vez a las tablas para poder cualificar los campos, algo que se utiliza mucho sobretodo si se están utilizando consultas multitablas.

 

Cross Join en SQL

 

Cross Join en SQL

Mis tablas tienen muchas columnas, por lo que partí el resultado en 2 imágenes, pero se puede notar que primeramente se muestran las columnas de la tabla Agente y consiguientemente de la tabla ventaD.

El CROSS JOIN no es la operación más utilizada ya que por lo regular al componer 2 tablas lo que se busca es que se haga bajo una condición de selección basada en campos de combinación y para ello es más eficiente utilizar las siguientes operaciones.

Composición interna INNER JOIN

En esta ocasión esta composición es en la que los valores de las columnas combinadas se comparan mediante un operador de comparación específico. En palabras simples, es un tipo de producto cartesiano con una condición.

Es de las operaciones más utilizadas ya que es muy común querer combinar los registros de una tabla relacionada con registros correspondientes en una tabla de referencia como pueden ser los nombres de los agentes en una respectiva venta o los datos de una factura con los datos completos de tu proveedor.

SELECT v.Mov, v.MovID, v.cliente, c.nombre, c.Direccion
FROM Venta AS v
INNER JOIN
Cte AS c
ON v.Cliente=c.Cliente

INNER JOIN en SQL

En esta consulta combinamos la tabla venta con la tabla de clientes, obtenemos los movimientos que tengamos en ventas, sus identificadores y los de los clientes y por otro lado tenemos el nombre del cliente y su dirección.

Para la condición que un INNER JOIN nos exige tenemos una igualdad (que es por lo regular lo que se utiliza) como la última línea de nuestra consulta en la que igualamos el campo de cliente en la tabla de venta con el campo de cliente de la tabla cte, lo que significa que está haciendo la relación entre ambas tablas en donde nos traiga las parejas de filas según la información de ambas tablas bajo la condición de que se esté hablando del mismo cliente.

El punto débil del INNER JOIN es que al hacer una consulta con este, no aparecerán las filas que no tienen fila correspondiente en la otra tabla.

En el caso de nuestro ejemplo no aparecen los clientes que no tengan estén especificados en ninguna venta, ni las ventas que no tengan especificado algún cliente.

Composición externa justify, RIGHT y FULL JOIN

La composición externa se expresa de manera similar al INNER JOIN ya que de igual forma se necesita una condición de combinación pero esta añade al resultado las filas que no cumplan con la condición necesariamente.

Ahora lo importante es notar el uso de las palabras LEFT y RIGHT ya que son las que indicarán la tabla de la cual se van a añadir las filas sin correspondencia. Es decir, si ponemos LEFT nos traerá todas las filas de la izquierda y si ponemos RIGHT las de la derecha. Mientras que con la palabra FULL llenamos todas nuestras bases y nos regresa como resultado todas las filas aunque no tengan correspondencia de un lado o de otro.

Para poder identificar de mejor manera las diferencias entre los tres tipos de composiciones externas, veremos el mismo ejemplo en los tres casos pero con la palabra determinante de la composición externa cambiada.

SELECT c.ID,c.FechaEmision, p.Nombre,p.Direccion,p.Estado
FROM Compra AS c
LEFT JOIN Prov AS p
ON p.Proveedor = c.Proveedor

LEFT, RIGHT y FULL JOIN en SQL

La consulta nos trae de resultado muchas filas entre las cuales incluye las de la tabla compra (izquierda) que no tienen necesariamente un referente en la tabla proveedor.

SELECT c.ID,c.FechaEmision, p.Nombre,p.Direccion,p.Estado
FROM Compra AS c
RIGHT JOIN Prov AS p
ON p.Proveedor = c.Proveedor

Composición externa LEFT, RIGHT y FULL JOIN en SQL

Este resultado es aún más claro que el anterior ya que trae todas las filas de la tabla proveedor (derecha), incluso si no tienen en correspondencia algo en la tabla compra.

SELECT c.ID,c.FechaEmision, p.Nombre,p.Direccion,p.Estado
FROM Compra AS c
FULL JOIN Prov AS p
ON p.Proveedor = c.Proveedor

Composición externa LEFT, RIGHT y FULL JOIN en SQL

En este último caso el resultado es el mismo que el anterior y lo podemos comprobar con el número de filas resultado. Pasa esto ya que todas las opciones disponibles se dan con un RIGHT JOIN y no hay nada exclusivo del LEFT JOIN. Si hubiera habido filas que tuviesen solo registros concordantes del lado izquierdo, el resultado del FULL JOIN hubiese sido más claro al juntar todos los resultados posibles.

Para finalizar con la nota me gustaría mencionar algunos consejos al momento de seleccionar el tipo de JOIN a utilizar, primeramente se debe hacer un JOIN normal con la debida condición de comparación para combinar filas y luego deberías pensar si lo que necesitamos es una composición externa o interna, en cuyo caso lo mejor sería seguir estas normas:

  • Si pueden haber filas de la primera tabla que no estén  relacionadas con filas de la segunda tabla y nos interesa que salgan en el resultado, entonces cambiamos a LEFT JOIN.
  • Si pueden haber filas de la segunda tabla que no estén  relacionadas con filas de la primera tabla y nos interesa que salgan en el resultado, entonces cambiamos a RIGHT JOIN.
  • Si necesitamos LEFT y RIGHT entonces utilizamos FULL JOIN.

Esto sería todo por la lección de esta nota, en la siguiente entrada de SQL básico trataremos el tema de las consultas resumen, las distintas funciones que se utilizan para este tipo de consultas como COUNT o AVG y las cláusulas HAVING y GROUP BY.

Si tienen alguna duda respecto al tema tratado o incluso de SQL básico en general, no duden en preguntar en los comentarios.

¡Nos leemos hasta otra!

 

Referencias

https://www.w3schools.com/SQl
Documentación sobre SQL de Microsoft: https://docs.microsoft.com/en-us/sql

Fuentes de las imágenes:

Screenshots tomadas por la autora en SQL Server.
Imagen original usada para la imagen destacada: https://blog.udemy.com/wp-content/uploads/2014/04/shutterstock_113180047.jpg

Los 10 animes que no te puedes perder esta PRIMAVERA 2018

Bienvenidos sean todos a otra temporada más de anime, sé que no soy muy constante con mis actualizaciones  temporada a temporada pero esta vez quise hacer esta nota para exponer algunos de los animes que me interesa ver esta nueva temporada de primavera 2018, ya que se ve que viene bastante bien.

Y además, vengo un poco justa de tiempo pero justamente apenas va a arrancar la temporada.

El número de animes que mencionaré rápidamente es sustancial así que lo dividiré en 3 categorías: animes de temporada regulares, animes de temporada que veré por nostalgia y continuaciones y OVAs para que sea un poco más digerible, así que vamos de lleno.

Animes de temporada regulares

Wotaku ni Koi wa Muzukashii

Wotaku ni Koi wa Muzukashii

Géneros: comedia, romance.

Fecha de estreno: 13 de abril.

La trama se centra en la relación entre un chico gamer otaku y una chica otaku a la que le gustan los manga de relaciones entre hombres. Tras volverse a encontrar en el trabajo luego de muchos años, empiezan a mantener una relación amorosa, ¿acabará saliendo bien esta relación?

Este es básicamente mi anime romántico pero quizás un poco absurdo con comedia de la temporada, no es algo tan fuera de lo común pero ya que soy gamer y obviamente me gustan los animes, me gustaría ver qué resultará de esto. Por otro lado, el diseño de la chica me gusta mucho y que la historia se lleve a cabo fuera del normal ambiente de escuela y además sea en algo como lo que es un trabajo de oficina (siendo que ahora yo estoy trabajando en oficina) me parece curioso.

Ojo al dato con este anime que inicia en la segunda tanda de la temporada.

Les dejo un trailer para que chequen la animación, aunque no tiene traducción:

Devils Line

Devis' Line

Géneros: acción, drama, romance, seinen, vampiros.

Fecha de estreno: 7 de abril.

Tsukasa, una estudiante de Universidad, es rescatada del ataque de un demonio, uno de tantos vampiros que viven entre los humanos. Anzai, su salvador, es un medio demonio que aprovecha sus poderes sobrenaturales para resolver crímenes de demonios en Tokio como parte de un equipo en la sombra de la policía de la ciudad. Mientras Anzai sigue protegiendo a Tsukasa un vínculo se va forjando entre ellos, un vínculo que pone a prueba la promesa de Anzai de no beber sangre humana.

Sé que suena un poco dramático con esa última oración pero he escuchado muy buenas cosas del manga así que si tienen el temor de que sea solo otra historia de vampiros, no se preocupen, me han asegurado que la trama es concisa y que es bastante interesante. Hace mucho que no veo algo que tenga que ver con vampiros o demonios, además la mezcla de géneros que tiene me intriga así que espero pasar un buen rato viendo este anime que llega a nosotros en la primera semana de la temporada.

Uno de los trailers para que se terminen de convencer o lo dejen por la paz de una vez:

 

Comic Girls

Comic girls

Géneros: slice of life, comedia.

Fecha de estreno: 5 de abril.

La historia está protagonizada por Kaoruko Moeta, una joven estudiante y mangaka de 15 años que se esconde tras el pseudónimo “Chaos”. Tras coronarse en una encuesta de lectores, el editor de Kaoruko le recomienda entrar en un dormitorio para mangakas femeninas. Sus compañeras son la mangaka de corte shojo Koyume Koizuka, la mangaka de manga romántico juvenil Ruki Irokawa y la mangaka de manga shounen Tsubasa Katsuki. Todas se apoyan mutuamente en su carrera.

No puede faltar mi anime slice of life para relajarme, solo para disfrutar de la vida que viven algunos personajes carismáticos. Este tipo de animes en verdad me dan un granito de alegría así que espero me dé unas risas y además escojo este anime por el tema que se tratará, sé que no va a llegar al nivel de profundidad de la vida de un mangaka como lo hace Bakuman y tampoco lo pretende pero igual será algo interesante de ver.

Y bueno, como bonus tenemos que se trata de un conjunto de chicas trabajando juntas y apoyándose mutuamente, eso nunca viene mal.

Al parecer estaba planeado para otra temporada pero aquí les dejo su trailer:

 

Tachibanakan Triangle

Tachibanakan Triangle

Géneros: comedia, shoujo Ai, ecchi.

Fecha de estreno: 4 de abril.

Después de regresar a su ciudad natal, Natsuno Hanabi está lista para empezar el instituto y está deseosa de vivir en la Mansión Tachibana, un dormitorio al estilo mansión lujosa. Sin embargo, debido a algunas circunstancias, nuestra protagonista termina viviendo en la deteriorada pero animada Casa Tachibana junto a su amiga de la infancia y una chica misteriosa y guapa.

¿Definirá este triángulo amoroso su experiencia en el instituto?

No les voy a mentir, este es quizás el anime culposo de la temporada para mi, pero es que yo soy fiel seguidora y fan del género shoujo ai (yuri). Últimamente nos han tratado muy bien con algunos animes del género pero el ritmo aún es muy bajo, por lo que es mi deber apoyar en cuanto vea alguna, al menos dándole una oportunidad.

Pero como digo, no les voy a mentir, la trama no es que me sea de lo más interesante y que tenga ecchi tampoco me entusiasma demasiado, si bien lo llego a tolerar dependiendo del nivel y si la trama es excelente, en este caso tengo dudas hasta con la trama (desde aquí quiero hacer constar que no he hablado con nadie del manga pero mi voto va para la amiga de la infancia por principios).

Pero bueno, algunas risas me ha de sacar y uno que otro momento genial para los fans del género así que veamos que tal va, que es uno de los que sale tempranito en cuanto a la temporada se refiere.

Si de casualidad les interesa, les dejo una pequeña probada:

Fumikiri Jikan

Fumikiri Jikan

Géneros: comedia, slice of life.

Fecha de estreno: 10 de abril.

El manga nos cuenta diferentes historias protagonizadas por chicas en un escenario común: un paso a nivel, un cruce donde coches y viandantes deben esperar a que pase un tren.

No hay demasiada información en cuanto a este futuro anime y creo que eso es parte del encanto que me atrajo. Si bien, se trata de otro slice of life, esto de las historias distintas me llena de curiosidad así que le voy a dar una oportunidad.

He visto animes con la misma base de trama general y algunas historias me han dejado destrozada porque quisiera saber más, mientras que otras me dejan un sabor amargo en la boca porque no me interesó ni un poco la historia de turno.

De cualquier manera, es un arma de doble filo y espero ver algunas buenas historias en este anime ya que la estética me gusta y eso de que sea en un paso a nivel me da a pensar para muchas cosas, no lo sé, se ve adorable con la posibilidad de ponerse un poco profundo de repente (y bueno, me huele al menos a una historia yuri así que eso me motiva más).

Como les digo, el trailer no dice mucho más que la fecha, pero igual lo pueden checar:

Animes que veré por nostalgia

 

Piano no Mori

Piano no Mori

Géneros: aventura, comedia, drama, musical, escolar, seinen.

Fecha de estreno: 9 de abril.

Kai y Shuhei son dos chicos muy diferentes que tienen un punto en común: la música. Mientras que Kai es hijo de una prostituta y aprendió a tocar con un piano abandonado en un bosque cerca de su casa, Shuhei es hijo de dos prestigiosos pianistas. Cuando los dos chicos se conozcan, surgirá una peculiar amistad y el camino de Kai por perfeccionar su técnica con el piano.

Si el título o la trama te suenan es porque hace algún tiempo yo escribí una nota incluyendo a la película animada del mismo nombre basada en el mismo manga.

La noticia me sorprendió por que yo no tenía idea que el manga seguía mucho más allá de lo que nos cuenta la película por lo que si seguiste mi sugerencia en su día, o ya has visto la película, aún hay muchos sucesos por descubrir.

Meto este anime en esta categoría porque efectivamente lo veré por que me causa nostalgia pero un buen bonus es que trae toda una parte de la trama que estoy ansiosa por desvelar. Y bueno, a mi me encanta la música y mi instrumento preferido es el piano así que esto me viene como anillo al dedo.

Acá una pequeña probada de lo que será este nuevo hermoso anime:

 

Captain Tsubasa (2018)

Captain Tsubasa (2018)

Géneros: acción, deportes, shounen.

Fecha de estreno: 3 de abril.

Remake del clásico Captain Tsubasa.

Sinopsis original: Tsubasa Ozora, también conocido fuera de Japón como Oliver Atom, es un chico que considera que el balón es su mejor amigo. Apasionado del fútbol desde su más tierna infancia, llegará al equipo de Nankatsu para convertirse en todo un as del balón.

¿Alguien dudó por un momento que no iba a incluir a este anime cuando mencioné las categorías? Yo crecí con los conocidos “super campeones” en latinoamérica y jugué a que era Oliver Atom anotando goles a diestra y siniestra, incluso aprendí a hacer el tiro con chanfle y pasé unos muy buenos ratos viendo los episodios una y otra vez con mis primos.

Así que estoy más que lista para volver a ver esas canchas de fútbol eternas y esos balones que no dejan de girar por más que los delanteros tengan un monólogo interno.

Bueno, en realidad sé que se van a dar prisa en los sucesos pero se me hace un buen detalle que a puertas del mundial de este año, decidan hacer un remake de este clásico entre los animes de deportes, aunque admitamoslo, sinceramente no lo necesita.

No creo que haga falta pero de este si encontré el trailer subtitulado, aquí lo tienen:

Major 2nd

Major 2nd

Géneros: comedia, deportes, drama, shounen.

Fecha de estreno: 7 de abril.

Daigo es hijo del prestigioso Goro Honda, un jugador de béisbol de primera categoría. Sin embargo, ya es hora de dejar la historia de Goro atrás y centrarse en las nuevas generaciones, que librarán su propia lucha para cumplir sus sueños.

Otro anime deportivo de la nostalgia, si a alguien le gustan los animes de deportes y además les gusta el béisbol, les recomiendo arduamente el anime del que este es secuela: “Major”. En la opinión de muchos Major es el mejor anime deportivo-dramático jamás hecho y sí, sé que eso es poner demasiado a los hombros de un anime pero es que es espectacular.

Como amante del béisbol, puedo decir que lo disfruté mucho y ahora que veo que una secuela viene a nosotros, no puedo evitar querer verla.

Sin embargo, este anime lo he puesto aquí y no en continuaciones porque simplemente lo veo en parte como algo separado de su original pero que veré por la nostalgia que seguro me llegara a causar.

Algo rápido de lo que nos traerá este anime:

Continuaciones y OVAS

 

En esta sección en particular seré un poco breve ya que las continuaciones son terceras temporadas y si no están viéndolas ya, no quiero arruinarles mucho de la trama.

Boku no Hero Academia 3rd Season

Boku no Hero Academia 3rd Season

Géneros: acción, comedia, superhéroes, escolar, shounen.

Fecha de estreno: 7 de abril.

Tercera temporada de Boku no Hero Academia

Esta nueva temporada abarca el arco del viaje escolar al bosque. Seguro han escuchado a medio mundo hablar de ella, si no la están viendo les recomiendo que no busquen más información y se pongan a verla, cuanto menos si los géneros listados les interesan y si ven la primera temporada que es cortita se darán cuenta de más o menos como va la cosa.

Solo puedo decir que este anime va mejor cada vez y que agradezco que saquen temporadas por ahora cada abril, aunque me da un poco de penita por los animadores, que duro han de estar trabajando.

Shokugeki no Souma: San no Sara – Toutsuki Ressha-hen

Shokugeki no Souma: San no Sara - Toutsuki Ressha-hen

Géneros: shounen, escolar, ecchi.

Fecha de estreno: 9 de abril.

Segunda parte de la tercera temporada de Shokugeki no Souma.

De este anime les puedo decir que ya tengo una nota que habla extensamente todo sobre él en el blog: Shokugeki no Souma: guerras culinarias.

Lo que si les digo es que a los fans no nos hizo gracia que dividieran la tercera temporada al estilo americano, sin embargo, si esta parte tiene buena calidad de animación y sigue con lo suyo, entonces quizás haya valido la pena.

 

Asagao to Kase-san

Asagao to Kase-san

Géneros: romance, yuri.

Fecha de estreno: 9 de junio.

Yamada puede ser una chica tímida y bastante torpe, pero el jardín de flores de su instituto siempre le da felicidad. De repente, un tipo de diferente de belleza le llama la atención: la vivaz estrella del club de atletismo, Kase-san.

A pesar de que no parecen tener mucho en común, pronto empezará un romance entre ellas en el que cada una aprenderá una importante lección mientras brota su relación. ¿Podrán las dos chicas, tan diferentes la una de la otra, aprender cómo hacer florecer su primer amor?

Esta es la única razón por la que puse en el título de la categoría la palabra “OVA” que quiere decir “Original Video Animation”, que es básicamente como una película o algo por el estilo.

En fin, ya he mencionado que soy fan del género yuri pero este no es nada algo que veré de manera culposa. He esperado que algo surgiera de este manga por muchísimo tiempo, les aseguro que si le dan una oportunidad, esto será de lo más dulce, tierno y bonito que verán en esta temporada.

Siendo un OVA, llega a nosotros en una sola exhibición y de la cual aún no se sabe su duración, eso sí, llega casi al acabar la temporada así que la estaré esperando ansiosa, si ya he esperado años por esto, unos meses más no me harán nada.

Cabe mencionar que aún tengo esperanza porque animen en calidad de serie este manga pero por el momento con este OVA estoy más que contenta, el diseño que le han puesto a las dos protagonistas es hermoso, sus voces les quedan genial y la música me hace estremecer. Pensándolo bien, creo que si serán unos meses de espera algo sufrida.

Este ha sido el trailer más reciente, no lo encontré con subtítulos pero si tienen la oportunidad, por favor vean este OVA.

Esto ha sido todo, como ven esta vez sí que tengo muchas cosas que ver. Solo el tiempo dirá si dejo de lado algún anime, si alguno otro se une a la lista o si a media temporada descubro alguno que no había visto en ningún lado o que veo que esté causando revuelo y le quiera dar una oportunidad.

Que tengan un buen inicio de temporada y que disfruten cuanto menos de uno de los animes que esta nos ofrece en esta ocasión.

¡Nos leemos hasta otra!

 

Referencias

Información:

http://ramenparados.com/tag/temporada-anime-primavera-2018/

www.animenet3.com/2017/10/estrenos-anime-periodo-de-primavera.html

Alguna información adicional en la Wikipedia por cada anime.

Imágenes:

Poster promocional oficial de Wotaku ni Koi wa Muzukashii.

Portada del primer tomo del manga de Devils Line recortada.

Poster promocional oficial de Comic Girls.

Tachibanakan Triangle: https://myanimelist.cdn-dena.com/images/anime/9/89442l.jpg

Fumikiri Jikan: https://myanimelist.cdn-dena.com/images/anime/1974/90764l.jpg

Piano no mori: https://www.koi-nya.net/img/subidos_posts/2018/01/Piano-no-Mori-anime.jpg

Imagen promocional de Captain Tsubasa(2018) recortada:

https://www.laparadadigital.com/v2/wp-content/uploads/2017/12/nuevo.jpg

Poster promocional de Major 2nd en otro formato:

https://www.animenachrichten.de/wp-content/uploads/2018/01/Major-2nd-News-Hauptbild.jpg

Boku no Hero: https://geekireland.com/wp-content/uploads/2016/06/Boku-no-Hero-Academia.jpg

Shokugeki no Souma: https://myanimelist.cdn-dena.com/images/anime/1046/91216l.jpg

Kase-san: www.otakutale.com/wp-content/uploads/2017/04/Asagao-to-Kase-san.-Characters-10.jpg

Imagen principal editada por la autora con promocionales de Devils Line, Kase-san y Major 2nd.

SQL básico: consultas simples

Bienvenidos a la segunda nota en esta serie de lecciones sobre SQL nivel básico, en esta ocasión nos dedicaremos a hablar un poco sobre las consultas simples que se pueden realizar para obtener datos de tablas o seleccionar registros por ejemplo.

Como vimos en la nota anterior, una de las sentencias más usadas y complejas es SELECT, el resultado de esta es una tabla lógica que alberga las filas resultantes de la ejecución de la sentencia.

Si bien su sintaxis puede llegar a ser muy extensa, por esta nota nos limitaremos a una versión muy simple de ella:

SELECT [ALL|DISTINCT][TOP expresion [PERCENT] [WITH TIES]] 
<lista_seleccion> FROM <origen> [WHERE  <condicion_ busqueda> ]
[ORDER BY {expression_columna|posicion_columna [ASC|DESC]}[ ,...n]]

 

En la nota anterior vimos algunos ejemplos básicos del uso del SELECT y por tanto notamos como se usa el FROM para definir el origen de los datos que queremos recuperar.

Por otro lado tenemos la lista de selección en donde se indican las columnas que se visualizarán en el resultado de la consulta, estas deben estar separadas por comas y aparecerán en el orden en que fueron escritas.

Entonces para poner un ejemplo rápido podríamos utilizar la siguiente sentencia:

SELECT Nombre, Tipo, Categoria
FROM Agente;

 

Lo que nos traerá dichas columnas en ese orden de la tabla agente:

Consulta de SQL

El proceso lógico de una consulta

Un SELECT está compuesto de una combinación de elementos obligatorios y opcionales. No todos los elementos estarán presentes en cada consulta SELECT, sin embargo, cuando un elemento está presente, siempre será evaluado en el mismo orden con respecto a los otros elementos presentes. Por ejemplo, una cláusula WHERE siempre será evaluada después de la cláusula FROM y antes de una cláusula GROUP BY, si es que existe.

A continuación tenemos los elementos ordenamos como se escribirían en una consulta, los números a su izquierda hacen referencia a la prioridad en que dichos elementos  son evaluados:

5: SELECT

1: FROM

2: WHERE

3: GROUP BY Si existe

4: HAVING Si existe

5: ORDER BY

Por lo que brevemente explicado quedaría como sigue:

  1. La cláusula FROM se evalúa en primer lugar, esto para proporcionar el origen del  resto de la declaración. Una tabla virtual se crea y continuamos con el siguiente paso.
  2. La cláusula WHERE es la siguiente a evaluar, filtra las filas de la tabla de origen para que coincidan con un predicado. La tabla virtual filtrada se usará en el siguiente paso.
  3. GROUP BY es el siguiente, se organizan las filas de la tabla virtual de acuerdo a los valores únicos que se encuentran en la lista GROUP BY. Se crea una nueva tabla virtual, que contiene la lista de grupos y continuamos con lo siguiente.
  4. La cláusula HAVING se evalúa a continuación, se filtran los grupos en base a su predicado. La tabla virtual creada en el paso 3 se filtra y continuamos con el paso final.
  5. La cláusula SELECT finalmente se ejecuta, siendo la determinación de qué columnas aparecerán en los resultados de la consulta.

No en todas las consultas es necesario usar todas las cláusulas, por lo que de faltar alguna, simplemente se saltaría el paso y continuaría con las cláusulas existentes.

Alias de columna y de tabla

En el encabezado de cada columna del resultado de la consulta, predeterminadamente aparece el nombre de la columna origen pero en ocasiones es necesario cambiar dicho nombre para una mejor presentación de los datos. De tal manera puedes identificar y leer el resultado de tu consulta de manera sencilla.

El alias de una columna se puede indicar con la cláusula AS, dependiendo de la versión y el sistema gestor que se utilice se tendrán que usar comillas simples para definir el alias o simplemente escribirlo como un texto normal siguiendo las normas de los identificadores.

Un ejemplo utilizando alias en columnas:

SELECT Articulo AS 'ID',Descripcion1 AS 'Descripción', 
Impuesto1 AS 'IVA', PrecioLista AS 'Precio en Lista'
FROM Art;

 

El resultado sería el siguiente:

Consulta SQL

Mientras que la misma consulta sin usar alias quedaría de la siguiente forma:

Consulta SQL - Alias de columna y de tabla

De la misma manera, podemos utilizar algún alias con nuestras tablas, así al momento de unirlas será más sencillo hacer referencias a campos de tablas específicas (eso se verá en el tema de consultas multitabla).

Los alias hacen que las consultas sean más legibles para el programador por lo que es recomendable utilizarlas incluso si se trata de una sola tabla para hacer un buen hábito de ello.

Un ejemplo utilizando una tabla con un alias es como sigue:

SELECT Cliente, Nombre
FROM cte AS c;

 

Se recomienda que se utilicen alias cortos, por lo regular de una sola letra que sería la inicial de la tabla o si se trata de un nombre de tabla formado de distintas palabras que sea lo más corto pero entendible posible. Cabe mencionar que este alias no influye en el resultado de la consulta y que tampoco cambia el nombre original de la tabla.

Funciones

Existen distintas funciones que podemos utilizar en nuestra lista de selección o en otras cláusulas de nuestra consulta como el WHERE.

Los principales tipos de funciones son de fecha, cadena, numéricas, de conversión y otras avanzadas.

Para evitar alargar mucho esta nota, les dejaré un enlace con una lista específica de manera que puedan buscar alguna función que se ajuste a sus necesidades. Cabe mencionar que este listado es para quienes usan SQL Server pero hay algunas similitudes por ejemplo para quienes utilizan MySQL.

Listado de funciones

Columnas Calculadas

A menudo es necesario utilizar operaciones con los datos de nuestras tablas para obtener resultados determinantes y específicos que no se podrían obtener con solo los datos de las tablas como tal .

Esto se evalúa a partir de una expresión que puede contener cualquier operador válido(+, -, *, /…), función válida, constantes, parámetros e incluso combinar varias operaciones de ser necesario.

Para que quede aún más claro cómo podemos utilizar esto, les dejo un ejemplo de una consulta con una columna calculada, utilizando a la vez un alias para la misma:

SELECT p.Nombre+' '+p.ApellidoPaterno+
' '+p.ApellidoMaterno AS 'Nombre Completo',
DATENAME(dw,p.FechaNacimiento)+','+
' '+DATENAME(dd,p.FechaNacimiento)+
' '+DATENAME(mm,p.FechaNacimiento)+
' '+DATENAME(yyyy,p.FechaNacimiento) AS 'Fecha de Nacimiento'
FROM Personal AS p;

 

Antes de que vean el resultado, quisiera explicarles un poco la consulta.

La primer columna se trata de una suma de 3 campos, además de esto entre cada uno se le agrega un espacio en blanco para que se lea de manera adecuada.

La segunda columna está conformada de otra suma pero utilizando además una función de fecha. La función DATENAME obtiene del campo seleccionado el nombre según lo que se le indique en su primer parámetro, siendo en este caso “dw” utilizado para el día de la semana, “dd” para el día en numérico, “mm” para el mes y finalmente “yyyy” para indicar el año a cuatro dígitos.

Ahora bien, el resultado sería como sigue:

Consulta SQL - Columnas calculadas

Ordenación de filas del resultado con cláusula ORDER BY

Si por alguna razón necesitamos que nuestros resultados sean mostrados en un orden específico lo podemos hacer mediante la cláusula ORDER BY.

Se puede indicar desde una columna o varias separadas por una coma, la columna que se quiera seleccionar deberá ser indicada mediante el nombre de columna en su origen de datos.

Se debe saber que por defecto se ordenan los datos de manera ascendente (ASC) pero de así necesitarlo le podemos indicar que sea de forma descendente (DESC).

Algunas cosas que debemos tener en cuenta al utilizar esta cláusula:

  • Si la columna de ordenación es numérica, las filas se ordenarán de menor a mayor.
  • Si la columna de ordenación es alfanumérica, las filas se ordenarán por orden alfabético.
  • Si la columna de ordenación es de tipo fecha, las filas se ordenarán de más antigua a más reciente o futura.

Ahora veamos un ejemplo utilizando ORDER BY:

SELECT Mov AS 'Movimiento', Cliente, Importe
FROM Venta AS v
ORDER BY Importe;

 

El resultado es ordenado entonces por el importe, de la venta que tenga el menor a la venta que tenga el mayor importe.

Consulta SQL - Order By

Selección de filas con la cláusula WHERE

Esta cláusula se usa para determinar las filas que se desean utilizar del origen de datos en específico. Es una cláusula muy utilizada ya que en el resultado de la consulta solo se mostrarán las filas que cumplan con que la condición dada sea TRUE.

Se pueden utilizar condiciones simples o más elaboradas con varios predicados unidos por operadores como AND u OR. Si se planea utilizar más de un predicado en la condición unidos con operadores se recomienda poner cada predicado entre paréntesis para evitar confusiones.

Los predicados que se trabajan en SQL son los siguientes:

  • Comparación estándar ( =  , <> , !=, < , <= , !<, >  , >= ,!>)
  • Pertenencia a un intervalo (BETWEEN)
  • Pertenencia a un conjunto (IN)
  • Test de valor nulo (IS NULL).
  • Coincidencia con patrón (LIKE)
  • Si contiene (CONTAINS)
  • FREETEXT

Un ejemplo del uso de la cláusula WHERE con una comparación estándar sería como sigue:

SELECT Personal, Nombre, ApellidoPaterno AS 'Apellido Paterno',
YEAR(FechaNacimiento) AS 'Año de Nacimiento'
FROM Personal WHERE YEAR(FechaNacimiento)  < 1980;

 

Donde la consulta pide algunas columnas de la tabla Personal pero solo de los empleados que hayan nacido antes de 1980.

Consulta SQL - WHERE

Podemos utilizar el predicado BETWEEN para definir un rango de datos entre dos expresiones, vamos directamente a un ejemplo.

SELECT Mov AS 'Movimiento', MovID AS 'ID del Movimiento',
DATENAME(dd,FechaEmision)+' '+ DATENAME(mm,FechaEmision)+
' '+DATENAME(yyyy,FechaEmision) AS 'Fecha de Emisión'
FROM Venta AS v
WHERE FechaEmision BETWEEN '20090101' AND '20090131'
ORDER BY FechaEmision;

 

En este ejemplo estamos requiriendo ciertas columnas de la tabla Venta donde la fecha de emisión de los movimientos sean las del mes de enero del año 2009, ordenadas por la fecha de emisión misma.

Consulta SQL - BETWEEN

Ahora bien, sigamos con el predicado IN, esta evalúa si el valor de la expresión es uno de los valores incluidos en la lista de valores designados entre paréntesis en el predicado. Podemos utilizar cualquier expresión siempre y cuando se utilice el mismo tipo de datos entre expresiones.

SELECT Mov AS 'Movimiento', MovID AS 'ID Movimiento',Proveedor
FROM Compra AS c
WHERE Proveedor IN ('PROVE001', 'PROVE002');

 

En esta consulta buscamos que se nos muestren los movimientos de compras hechos por los proveedores PROVE001 y PROVE002.

Consultas SQL - WHERE

Uno de los predicados más útiles en caso de que nuestra base de datos tengan muchos datos nulos es el de IS NOT NULL. Que básicamente se trata de obtener los datos de las columnas que no sean nulos pero con el ejemplo quedará más claro el objetivo de hacer esto.

Utilizando parte de una consulta anterior, la base de datos que estoy utilizando tiene varios valores nulos por lo que en la consulta de la cláusula ORDER BY utilice este predicado como sigue:

SELECT Mov AS 'Movimiento', Cliente, Importe
FROM Venta AS v
WHERE Importe IS NOT NULL
ORDER BY Importe;

 

Esto hace que si hay valores nulos, no nos los muestre para realmente obtener los datos que necesitamos, de lo contrario la consulta sin el IS NOT NULL nos daría este resultado:

Consultas SQL - IS NOT NULL

Finalmente podemos utilizar operadores lógicos para unir más de una condición simple y conformar una condición compuesta.

SELECT Personal, Nombre, ApellidoPaterno, Tipo, Estado
FROM Personal
WHERE (Nombre LIKE 'J%') AND (Estado='DISTRITO FEDERAL');

 

En esta consulta estamos utilizando un predicado que no hemos mencionado y es el LIKE. Este predicado busca similitudes dependiendo lo que le indiques, en este caso se busca que el nombre de empleado empiece con la letra “J”, por otro lado y como segunda condición se busca que el empleado sea del estado “Distrito Federal”.

Consultas SQL

Con esto finalizamos la lección de la nota de hoy no sin antes recordarles que esto se trata de un tipo de serie por lo que este pequeño curso de SQL básico continuará en futuras entradas, cualquier duda que pudieran tener son bienvenidos de dejarlas en los comentarios y yo responderé a la brevedad posible.

En la siguiente entrada de SQL básico trataremos el tema de las consultas multitabla, todas las maneras en las que podemos juntar dos o más tablas para obtener resultados totalmente distintos a los que obtenemos utilizando una sola tabla.

¡Nos leemos hasta otra!

Referencias

https://www.w3schools.com/SQl

Documentación sobre SQL de Microsoft: https://docs.microsoft.com/en-us/sql

Imágenes usadas:

Logo SQL:http://sanalkurs.net/etiketler/sql-injection

Screenshots tomadas por la autora en SQL Server.

3 páginas web que son el paraíso de los fanfics

Hace apróximadamente 1 año escribí una nota en la cual hablaba de la vida en el fandom y de la manera de sobrevivir ante todos los términos que para un novato podrían resultar extraños. En esta ocasión quisiera ahondar un poco sobre uno de los términos tratados como lo es el fanfiction.

Básicamente, el fanfiction (abreviado como fanfics, fics o similares) es una obra de ficción escrita por fans y para fans, tomando como fuente alguna otra obra como puede ser una película, serie, anime, videojuego, libro, entre otros.

Los fanfics toman muchos cursos de acción y al final las personas que los escriben tienen distintas razones para hacerlo, al igual que los lectores las tienen para leerlos.

Algunos fanfics buscan cerrar brechas argumentales en la historia original (fix-it fics) mientras que otros buscan explorar de manera más profunda las motivaciones de los personajes ya sean principales o secundarios. Por otro lado tenemos fics que pueden coexistir bajo las mismas reglas de su historia original (canon) y otros que se desarrollan en contextos distintos usando solo de base los personajes originales o inclusive solo el universo en el que se desarrolla.

Al final del día, en los fanfics los escritores (fickers) pueden darle a los personajes una backstory más profunda o crearla de la nada si esta era inexistente o pueden escribir sobre los personajes en una etapa joven o adulta, pueden transformar obras para que adopten un género distinto e incluso pueden hacer que dos o más obras se mezclen y sean algo completamente nuevo (crossover).

Podemos decir entonces que un fanfic no tiene un límite establecido en cuanto a lo que puede y no expresar pero sí que existen distintos géneros en los que se pueden categorizar para que su búsqueda sea más sencilla. A continuación mencionaré algunos de los más usados para que al momento de explorar algún sitio web dedicado a los fics, sea una experiencia amena sin tener que sentirse bombardeado con nueva información.

Angst: fics centrados en algún personaje o personajes que estén sufriendo emocionalmente, podemos asociarlo con la tragedia, frustración, tristeza y angustia.

AU: por sus siglas en inglés “Alternate Universe” que quiere decir “Universo Alterno”, es básicamente cuando el fic está ambientado en un universo distinto al original de los personajes usados. Esto puede variar desde, por ejemplo, poner a los personajes de la serie Supergirl en el universo de Harry Potter (que puede ser considerado a su vez, un crossover) hasta que los mismos personajes de Supergirl estén en un universo en el que, por ejemplo, simplemente van a la universidad sin tener en cuenta muchas de las cosas de la serie en sí misma.

Fluff: un fic hecho para hacer sentir feliz a los lectores, la trama puede no llegar a ser muy complicada pero tienen que tener un final feliz.

Hurt/Comfort: literalmente, esto se traduce a “dolor/alivio” y es cuando uno de los personajes de la historia es herido física o emocionalmente y algún otro le va a brindar su comprensión y apoyo para superar el mal trago.

Smut: un fic que contenga escenas sexuales explícitas. Esto se puede referir desde solo un capítulo hasta la historia en su totalidad y generalmente es bueno categorizar el fic con el género en ambos casos para evitar que menores lo lean (aunque seamos honestos, lo leen de todas formas).

Fix-it: no sé si llamarlo un género en sí mismo ya que dentro de este se puede desarrollar una trama que por ejemplo incluya fluff, angst o algún otro. Pero como comenté con anterioridad, este tipo de historia tratan básicamente de arreglar alguna parte de la trama, ya sea algún agujero argumental o incluso últimamente hay fics categorizados de esta manera para lo que los fans llaman “corregir los errores del autor”, que en sí mismo suena algo agresivo pero los fans lo utilizan, por ejemplo, en caso de que su pareja preferida de una obra haya roto, pueden hacer un “fix-it fic” en el que arreglen esa parte de la trama.

Plot? What Plot? (PWP): algo muy popular últimamente, su traducción “¿trama? ¿qué trama?” es más que clara, una historia con nulo argumento y en la que por lo general solo se busca poner a los personajes en situaciones específicas sin justificación alguna.

Esos son algunos géneros distintos que creo podrían serles útiles o que quizás desconocían ya que expresados de esa forma son un poco exclusivos de los fandoms. Por supuesto que en los fanfics existen géneros como el sci-fi, aventura, romance, parodia, humor, horror, suspenso, fantasía y otros más pero estos son conocidos por el público en general ya que otras obras son categorizadas de forma similar.

Me gustaría ahondar más en el tema de los fanfics ya que es todo un mundo pero creo que hice un preámbulo lo suficientemente largo para el tema específico que nos concierne en esta ocasión y ese no es más que recomendarles 3 sitios web en los que pueden sumergirse para leer o escribir fics así que vamos directo a ello.

fanfiction.net

Este fue uno de los primeros sitios que visité sabiendo lo que era un fanfic y ya que estaba un poco metida en todo el asunto. Es cariñosamente conocido como FF.net y tiene una gran cantidad de escritos acumulados gracias a sus años de servicio.

Como dato personal, les puedo decir que fue el sitio que me vio nacer como ficker, si bien hace mucho que no escribo nada que pueda considerar un fanfic, por años mantuvo mi atención como autora y como ávida lectora.

Ahora bien, esta no sería una recomendación al completo si no les diera los que a mi parecer son en resumen sus puntos buenos y malos.

Ventajas

  • Ha acumulado una gran cantidad de fanfics a través de los años.
  • Está categorizado por tipo de obra (series, libros, películas, etc.) y hace muy sencilla su búsqueda.
  • Es popular así que cuenta hasta con aplicación para el celular y con una comunidad activa.
  • Filtros tan específicos como gustes para buscar fanfics.
  • Se pueden colocar portadas a los fics y eso es un detalle más personal y bonito.
  • Puedes crear tu cuenta, personalizarla, suscribirte a fics e incluso personalizar alertas a tu email para saber cuando son actualizados los fics.
  • Tiene una interfaz sencilla así que tanto si eres ficker como lector, puedes encontrar tu camino con facilidad. Como ficker quizás te tome un poco de tiempo acostumbrarte a los menús y donde está cada cosa pero es algo muy intuitivo.
  • Tiene una sección dedicada a su comunidad a estilo de foro de discusión en el que las personas pueden socializar e incluso coincidir con otras para colaborar en futuros fics o para encontrar un beta reader (alguien que sea como tu editor).

Desventajas

  • Si bien cuenta con fics en español, un 90% está en inglés y otros idiomas varios.
  • Los filtros son geniales pero si eres primerizo, puede que se te complique un poco si solo quieres buscar un fic de tu pareja favorita y ya está.
  • A veces buscar por obra sin rumbo alguno (solo para ver que hay) es tedioso ya que aunque solo haya 1 fic de una obra, esta aparecerá sin falta y eso es bueno pero como menciono, tedioso si tu plan es solo checar que hay en una categoría.
  • Depende mucho del fandom pero hay ciertos fickers que iniciaron en esta plataforma y actualmente publican su contenido en otro lugar, por lo que han migrado.
  • No tiene una sección donde poner notas del autor específicas, cada autor se las ingenia para agregarlas pero un lugar especializado serviría de mucho.
  • No hay manera de indicar que un fic simplemente te gustó. Si bien yo recomiendo ampliamente dejar siempre que se pueda un comentario como muestra de apoyo, a veces el fic amerita simplemente dejar un “vale, me gustó” pero eso como comentario no dice mucho. En esta plataforma no se cuenta (al menos aún) con algo como un botón de “me gusta” para mostrar apoyo simple.

Me parece una excelente plataforma en la cual iniciar a compartir fics o explorar para leerlos, aunque debo ser honesta y es que actualmente no la visito demasiado (solo con actualizaciones de fics que empecé a leer como por eso de 2011 y que siguen vigentes). La razón por la que dejé de entrar a este sitio no es más que en parte mi descubrimiento de la siguiente recomendación y en parte alguna de las desventajas que nombré y es que gran cantidad de los fanfics de mis fandoms actuales se publican en otro sitio o si se publican en FF.net, también son publicados en otro sitio al mismo tiempo.

Como digo, no deja de ser una página web excelente y que no dejaré de recomendar a todo autor o lector interesado.

Archive of our own

Conocido cariñosamente como “AO3” en el mundo de los fandoms, esta página web me ha acompañado en las buenas y en las malas y puedo decir sin temor a equivocarme que actualmente lo considero el amor de mi vida en cuanto a fanfics se refiere.

Estoy total y completamente enamorada del sitio y con seguridad les digo que lo visito a diario sin falta, en parte porque siempre estoy leyendo algún fanfic en mis tiempos libres y en parte porque realmente me gusta la página en sí y vuelvo a ella cada que puedo.

Pero no dejen que mi amor por ella los influya demasiado, cada persona es distinta y por ello requiere de cosas diferentes, por lo que de nuevo expondré algunos puntos a favor y en contra para que puedan decidir si le dan una oportunidad o no.

Ventajas

  • Es un proyecto creado y manejado por fans así que tienden a escuchar sugerencias y hacen actualizaciones y mejoras constantes a la página.
  • Tiene sus buenos años funcionando por lo que cuenta con numerosos fanfics de una gran variedad de fandoms.
  • Sus filtros son una maravilla de manejar, desde su buscador que funciona con una palabra, un personaje, una obra, etc. de manera simple hasta sus filtros en sí mismos para buscar por género, pareja, etiquetas usadas por los autores, etc.
  • Los autores pueden etiquetar su contenido, una cosa es categorizar el fic por género, por obra o incluso por personajes pero AO3 permite poner etiquetas como si fuera una entrada de blog, permitiendo a los autores avisar de cosas más específicas a sus lectores como “relaciones sexuales entre menores” o “advertencia: contiene charla sobre suicidio” o alguna otra cosa para que los lectores susceptibles a cierto contenido se puedan proteger a ellos mismos.
  • Tiene una funcionalidad llamada “kudos” en la que, puesto de manera simple, un lector puede darle amor a un fanfic y por ende el autor se puede dar cuenta de cuanto es que está gustando su fic. Es una manera simple y rápida de mostrar apoyo por aquellos que se esfuerzan tanto para darnos historias, siempre voy a recomendar dejar comentarios y palabras de aliento pero a veces un detalle como este puede hacer que un ficker sienta mucha más motivación para seguir escribiendo.
  • Tiene una sección específica donde se pueden colocar notas del autor por cada capítulo, fomentando así la comunicación entre autor y lector.
  • Como ficker, es muy sencillo de entender la interfaz e incluso puedes hacer uso del sistema de etiquetado para escribir fics dedicados a usuarios del portal o a otras personas solo con un nombre específico.
  • Tiene una opción para agrupar fics bajo el nombre de una “serie”. De tal manera que si lo prefieres puedes tener organizados tus fics si hay una historia inicial, secuela o quizás hasta spin-offs. Esto le ayuda tanto al ficker como al lector a encontrar de manera ordenada los fics.

Desventajas

  • Por desgracia, muchos de sus fanfics están en inglés así que si no estás muy a gusto con el idioma, quizás te cueste un poco encontrar un fic en español de un fandom que quieras con las especificaciones que busques.
  • Para tener una cuenta, necesitas ser invitado por alguien. No hay problema si no conoces a alguien que ya tenga una cuenta, hay una opción para “ser invitado” pero la respuesta puede ser tan rápida como 24 horas hasta quizás semanas así que toca ser paciente. La cuenta es necesaria para publicar fics y si tienes pensado recibir notificaciones de actualizaciones de fics y dejar comentarios que puedan responder los autores. Solo para leer no es necesaria pero por ejemplo ciertos autores no permiten los comentarios anónimos por lo que podrías quedarte con las ganas de dar tu opinión de un muy buen fic si no tienes una.
  • No se pueden colocar portadas a los fics aunque se debe mencionar que sí se puede insertar cualquier tipo de contenido en el cuerpo del fanfic como tal.
  • No suele suceder a menudo pero cuando hay actualizaciones o mantenimiento del sitio hay un período de tiempo en el que no se puede acceder, si bien tratan de hacerlo lo más rápido posible, quizás les parezca raro las primeras veces que les pase.

Como he dicho, AO3 es donde paso una gran parte de mi tiempo libre por lo que la considero algo así como un hogar (al menos virtual) y es al menos en donde leo un 90% del contenido relacionado con fanfics actualmente. Con sus ventajas y desventajas es el sitio web que se acomoda de mejor manera a mis necesidades como lectora por lo que si te encuentras en una posición similar a la mía, quizás AO3 sea tu mejor opción.

watpad

Esta es la página de entre las que estoy recomendado con la que menos contacto personal he tenido. No por alguna razón en específico sino que estoy bastante feliz leyendo fics en otros sitios donde veo que mis fandoms florecen. Ahora bien, de las páginas recomendadas en este artículo esta es la primera a la que no le conozco un apodo cariñoso por lo que Wattpad a secas será.

De nueva cuenta vamos con los pros y las contras para que puedan decidir por sí mismos si esta página es la ideal para ustedes.

Ventajas

  • Es de las comunidades más grandes de lectores y escritores de fanfics por lo que cuenta con mucho apoyo, lo cual repercute en actualizaciones constantes y detalles como su propia aplicación móvil.
  • De las mejores para leer de manera móvil ya sea por la página o por la misma aplicación, lo cual resulta muy cómodo en tramos largos de traslados o simplemente en horarios muertos lejos de una computadora.
  • Si bien el porcentaje de fic en inglés sigue siendo elevado, es de las páginas que tiene un mayor número de historias en español y no solo eso sino que su comunidad hispanohablante es activa.
  • Se pueden personalizar los fanfics al poder colocar imágenes de portada y otros detalles que hagan sentir al fic casi como una publicación de libro regular.
  • Cada cierto tiempo hay un evento de “nominaciones a los mejores escritos” que no solo premia de cierta forma a los fickers (lo cual es motivación) sino que también le sirve a los lectores para encontrar nuevas historias que muchos otros ya están o han disfrutado.

Desventajas

  • Sus filtros son menos detallados por lo que encontrar un fic con especificaciones precisas puede costar algo de trabajo pero si eres de los que simplemente se lanzan a la aventura, ve por ello.
  • Quizás esto sea más una ventaja para algunos pero es que hablando de fanfics, si bien esta página tiene una gran cantidad de ellos, otro buen porcentaje es dedicado a historias originales escritas por fans de distintos géneros y que en cierto modo a veces han sido inspiradas por alguna otra obra en concreto.
  • Muchos de los fanfics dejan mucho que desear en cuanto a ortografía y redacción por lo que si eres alguien exigente en ese aspecto, quizás tengas que buscar a fondo entre las historias. Esto no es algo exclusivo de esta página pero el ser tan popular le pasa factura teniendo un mayor número de fics de este estilo. Siendo algo hecho por el amor al arte tampoco es que los lectores tengamos derecho a quejarnos pero sí que podemos elegir qué es lo que queremos leer.
  • Al ser una página tan popular y con tanto flujo de personas entrando y saliendo, es lógico que lleguen a tener alguno que otro problema para mantener todo a flote, sin embargo, Wattpad tiene sus temporadas en las que no puedes acceder porque la están arreglando por lo que se debe ser muy paciente en esas instancias.

Si parte de lo que buscas es encontrar obras originales en tu travesía explorando el mundo de los fanfics, Wattpad puede ser el lugar para ti. Muchas personas la utilizan a diario y como en todas las páginas hay momentos en los que ciertos fics pueden sufrir hiatus prolongados pero siempre se están actualizando muchos otros fics, además, con el gran archivo con el que cuentan actualmente hay mucho contenido al cual acceder si eres un primerizo en el asunto.

Con este artículo espero les haya despertado aunque sea un poco la curiosidad si es que no están acostumbrados a leer fics y puedan darle una oportunidad a esta tan bonita manera de fanwork. Les aseguro que no será la última vez que hable del tema ya que me apasiona de verdad y de hecho ya tengo planeada una nota complementaria pero para eso creo que todavía les dejaré un rato sin volver a insistir con los fanfics.

Quien sabe, quizás en alguna de estas 3 páginas encuentren la obra maestra que han estado buscando en alguno de sus fandoms o quizás se den cuenta que les gustan los fics si es que nunca les han dado la oportunidad.

Elijan sabiamente y recuerden: no se pongan a empezar a leer un fanfic de más de 20 capítulos o que tengan más de 50 mil palabras pasada la medianoche por que la siguiente mañana va a ser muy difícil despertarse a tiempo.

¡Nos leemos hasta otra!

Referencias

SQL Básico: conceptos básicos

SQL (Structured Query Language) o en español Lenguaje Estructurado de Consulta es el lenguaje utilizado para definir, controlar y acceder a los datos almacenados en una base de datos relacional.

Se trata de un lenguaje universal empleado en cualquier sistema gestor de bases de datos relacional, cuenta con un estándar definido a partir del cual cada sistema gestor ha desarrollado una versión propia.

Sigue leyendo