AdSense_BarHorizontal

jueves, 14 de abril de 2016

SQL - Consultas SELECT MultiTabla


Combinaciones internas - INNER JOIN

Las combinaciones internas se realizan mediante la instrucción INNER JOIN. Devuelven únicamente aquellos registros/filas que tienen valores idénticos en los dos campos que se comparan para unir ambas tablas. Es decir aquellas que tienen elementos en las dos tablas, identificados éstos por el campo de relación.

La mejor forma de verlo es con un diagrama de Venn que ilustre en qué parte de la relación deben existir registros:



INNER-JOIN


En este caso se devuelven los registros que tienen nexo de unión en ambas tablas.
Esto puede ocasionar la desaparición del resultado de filas de alguna de las dos tablas, por tener valores nulos, o por tener un valor que no exista en la otra tabla entre los campos/columnas que se están comparando.

Su sintaxis es:

SELECT T1.Col1, T1.Col2, T1.Col3, T2.Col7
FROM Tabla1 T1 INNER JOIN Tabla2 T2 ON T1.Col1 = T2.Col1
Por ejemplo suponiendo tenemos las siguientes tablas (Carro, Carroceria)

IdCarro
NombreCarro
IdCarroceria
1
Hiunday i35
1
2
Chevrolet Spark GT
2
3
Mazda 3
2
4
Renault Stepway
3
5
Ford Explorer
NULL
6
Nissan Sentra
NULL

IdCarroceria
NombreCarroceria
1
Sedan
2
HastBack
3
Camioneta
4
Convertible
5
Limosina
6
Furgoneta

Al momento de ejecutar la sgte Consulta con INNER JOIN:
SELECT T1. IdCarro, T1. NombreCarro, T1. IdCarroceria, T2. IdCarroceria, T2. NombreCarroceria
FROM Carro T1
INNER JOIN Carroceria T2 ON T1. IdCarroceria= T2. IdCarroceria

 Se obtendrá

INNER JOIN
IdCarro
NombreCarro
IdCarroceria
IdCarroceria
NombreCarroceria
1
Hiunday i35
1
1
Sedan
2
Chevrolet Spark GT
2
2
HastBack
3
Mazda 3
2
2
HastBack
4
Renault Stepway
3
3
Camioneta


Combinaciones externas (OUTER JOIN)

Las combinaciones externas se realizan mediante la instrucción OUTER JOIN. Como enseguida veremos, devuelven todos los valores de la tabla que hemos puesto a la derecha, los de la tabla que hemos puesto a la izquierda o los de ambas tablas según el caso, devolviendo además valores nulos en las columnas de las tablas que no tengan el valor existente en la otra tabla.

Es decir, que nos permite seleccionar algunas filas de una tabla aunque éstas no tengan correspondencia con las filas de la otra tabla con la que se combina. Ahora lo veremos mejor en cada caso concreto, ilustrándolo con un diagrama para una mejor comprensión.

La sintaxis general de las combinaciones externas es:

FROM Tabla1 [LEFT/RIGHT/FULL] [OUTER] JOIN Tabla2 ON Condiciones_Vinculos_Tablas
Como vemos existen tres variantes de las combinaciones externas.

En todas estas combinaciones externas el uso de la palabra OUTER es opcional. Si utilizamos LEFT, RIGHT o FULL y la combinación de columnas, el sistema sobreentiende que estamos haciendo una combinación externa.

Variante LEFT JOIN


Se obtienen todas las filas de la tabla colocada a la izquierda, aunque no tengan correspondencia en la tabla de la derecha.

Así, para seleccionar todas las filas de la Tabla1, aunque no tengan correspondencia con las filas de la Tabla2, suponiendo que se combinan por la columna Col1 de ambas tablas escribiríamos:

SELECT T1.Col1, T1.Col2, T1.Col3, T2.Col7
FROM Tabla1 T1 LEFT [OUTER] JOIN Tabla2 T2 ON T1.Col1 = T2.Col1
Esto se ilustra gráficamente de la siguiente manera:
  


Volviendo a nuestro ejemplo al momento de ejecutar la sgte Consulta con LEFT JOIN:
SELECT T1. IdCarro, T1. NombreCarro, T1. IdCarroceria, T2. IdCarroceria, T2. NombreCarroceria
FROM Carro T1
LEFT JOIN Carroceria T2 ON T1. IdCarroceria= T2. IdCarroceria

Se obtendrá
IdCarro
NombreCarro
IdCarroceria
IdCarroceria
NombreCarroceria
1
Hiunday i35
1
1
Sedan
2
Chevrolet Spark GT
2
2
HastBack
3
Mazda 3
2
2
HastBack
4
Renault Stepway
3
3
Camioneta
5
Ford Explorer
NULL
NULL
NULL
6
Nissan Sentra
NULL
NULL
NULL



Variante RIGHT JOIN


Análogamente, usando RIGHT JOIN se obtienen todas las filas de la tabla de la derecha, aunque no tengan correspondencia en la tabla de la izquierda.

Así, para seleccionar todas las filas de la Tabla2, aunque no tengan correspondencia con las filas de la Tabla1 podemos utilizar la cláusula RIGHT:

SELECT T1.Col1, T1.Col2, T1.Col3, T2.Col7
FROM Tabla1 T1 RIGHT [OUTER] JOIN Tabla2 T2 ON T1.Col1 = T2.Col1
El diagrama en este caso es complementario al anterior:



Volviendo a nuestro ejemplo al momento de ejecutar la sgte Consulta con LEFT JOIN:
SELECT T1. IdCarro, T1. NombreCarro, T1. IdCarroceria, T2. IdCarroceria, T2. NombreCarroceria
FROM Carro T1
RIGTH JOIN Carroceria T2 ON T1. IdCarroceria= T2. IdCarroceria

Se obtendrá
IdCarro
NombreCarro
IdCarroceria
IdCarroceria
NombreCarroceria
1
Hiunday i35
1
1
Sedan
2
Chevrolet Spark GT
2
2
HastBack
3
Mazda 3
2
2
HastBack
4
Renault Stepway
3
3
Camioneta
NULL
NULL
NULL
4
Convertible
NULL
NULL
NULL
5
Limosina
NULL
NULL
NULL
6
Furgoneta

 Variante FULL JOIN


Se obtienen todas las filas en ambas tablas, aunque no tengan correspondencia en la otra tabla. Es decir, todos los registros de A y de B aunque no haya correspondencia entre ellos, rellenando con nulos los campos que falten:

FULL-JOIN

Es equivalente a obtener los registros comunes (con un INNER) y luego añadirle los de la tabla A que no tienen correspondencia en la tabla B, con los campos de la tabla vacíos, y los registros de la tabla B que no tienen correspondencia en la tabla A, con los campos de la tabla A vacíos.

Su sintaxis es:

SELECT T1.Col1, T1.Col2, T1.Col3, T2.Col7
FROM Tabla1 T1 FULL [OUTER] JOIN Tabla2 T2 ON T1.Col1 = T2.Col1



Volviendo a nuestro ejemplo al momento de ejecutar la sgte Consulta con LEFT JOIN:
SELECT T1. IdCarro, T1. NombreCarro, T1. IdCarroceria, T2. IdCarroceria, T2. NombreCarroceria
FROM Carro T1
RIGTH JOIN Carroceria T2 ON T1. IdCarroceria= T2. IdCarroceria

Se obtendrá
IdCarro
NombreCarro
IdCarroceria
IdCarroceria
NombreCarroceria
1
Hiunday i35
1
1
Sedan
2
Chevrolet Spark GT
2
2
HastBack
3
Mazda 3
2
2
HastBack
4
Renault Stepway
3
3
Camioneta
5
Ford Explorer
NULL
NULL
NULL
6
Nissan Sentra
NULL
NULL
NULL
NULL
NULL
NULL
4
Convertible
NULL
NULL
NULL
5
Limosina
NULL
NULL
NULL
6
Furgoneta


jueves, 18 de febrero de 2016

Problemas con el emulador de Android Studio - Cannot launch AVD in emulator

En esta nueva entrada de DatoByte les quiero Compartir la solución a un problema con el emulador AVD de Android Studio.

El problema:

Cannot launch AVD in emulator.
Output:
emulator: ERROR: x86 emulation currently requires hardware acceleration!
Please ensure Intel HAXM is properly installed and usable.
CPU acceleration status HAX kernel module is not installed!



La solución:


Para solucionar este incidente, basta con ejecutar los siguientes 3  pasos

Paso 1
Tendremos que ingresar a la BIOS de nuestro equipo (En algunos equipos se ingresa a la BIOS con alguna de las sgtes teclas  Esc, F8, F10, todo dependera de tu equipo), luego de ello tendremos que buscar la opción relacionada con el permiso para virtualizar, en algunas BIOS se llama "Intel Virtual Technology" en otras solo "Virtual Technology", y obviamente tendremos que ponerla Enable.



Paso 2
Abriremos el JDK Management  y procederemos a descargar el SDK Tools de nombre "Intel x86 Emulator Accelerator (HAXM installer)" la siguiente imagen te puede orientar en los subpasos a seguir
prestar atención a la ruta donde quedara dicha descarga enumerada con el 3, ya que tendremos que ir a esta ruta.


Paso 3
Como se dijo anteriormente nos desplazaremos a la ruta donde quedo descargado, alli encontraremos el archivo de nombre "intellhaxm-android.exe" el cual procederemos a instalarlo, este proceso de instalación es muy sencillo (Next>>Next>>Next>>Finish), Luego de esto es recomendable que si tienes en Android Studio abierto lo reinicies para que los cambios surtan efecto, (No es necesario reiniciar el equipo completamente, solo el Android-Studio)


Si hemos realizado los pasos correctamente luego de Iniciar el Android Studio Abrimos el AVD y ejecutaremos cualquier dispositivo y este se ejecutara perfectamente.



Espero te haya servido este tutorial, si te ha servido, no olvides darle +1 e inscribirte a mis entradas.

También puedes dejar tus dudas y comentarios al respecto.

miércoles, 17 de febrero de 2016

Iniciando programacion en JavaScript

En esta nueva entrada de DatoByte les quiero compartir conceptos básicos para iniciar la programación en JavaScripts.

¿Qué es Javascript?


JavaScript es un lenguaje de programación que se utiliza principalmente para crear páginas web dinámicas.

Una página web dinámica es aquella que incorpora efectos como texto que aparece y desaparece, animaciones, acciones que se activan al pulsar botones y ventanas con mensajes de aviso al usuario.

Técnicamente, JavaScript es un lenguaje de programación interpretado, por lo que no es necesario compilar los programas para ejecutarlos. En otras palabras, los programas escritos con JavaScript se pueden probar directamente en cualquier navegador sin necesidad de procesos intermedios.

A pesar de su nombre, JavaScript no guarda ninguna relación directa con el lenguaje de programación Java. Legalmente, JavaScript es una marca registrada de la empresa Sun Microsystems

Javascript es un lenguaje con muchas posibilidades, utilizado para crear pequeños programas que luego son insertados en una página web y en programas más grandes, orientados a objetos mucho más complejos. Con Javascript podemos crear diferentes efectos e interactuar con nuestros usuarios.

Es necesario resaltar que hay dos tipos de JavaScript: por un lado está el que se ejecuta en el cliente, este es el Javascript propiamente dicho, aunque técnicamente se denomina Navigator JavaScript. Pero también existe un Javascript que se ejecuta en el servidor, es más reciente y se denomina LiveWire Javascript.

¿Dónde puedo ver funcionando Javascript?


Entre los diferentes servicios que se encuentran realizados con Javascript en Internet se encuentran:

  • Correo
  • Chat
  • Buscadores de Información

También podemos encontrar o crear códigos para insertarlos en las páginas como:

  • Reloj
  • Contadores de visitas
  • Fechas
  • Calculadoras
  • Validadores de formularios
  • Detectores de navegadores e idiomas


No todo es color rosa


En cuanto a las limitaciones, JavaScript fue diseñado de forma que se ejecutara en un entorno muy limitado que permitiera a los usuarios confiar en la ejecución de los scripts.

De esta forma, los scripts de JavaScript no pueden comunicarse con recursos que no pertenezcan al mismo dominio desde el que se descargó el script. Los scripts tampoco pueden cerrar ventanas que no hayan abierto esos mismos scripts. Las ventanas que se crean no pueden ser demasiado pequeñas ni demasiado grandes ni colocarse fuera de la vista del usuario (aunque los detalles concretos dependen de cada navegador).

Además, los scripts no pueden acceder a los archivos del ordenador del usuario (ni en modo lectura ni en modo escritura) y tampoco pueden leer o modificar las preferencias del navegador.

Por último, si la ejecución de un script dura demasiado tiempo (por ejemplo por un error de programación) el navegador informa al usuario de que un script está consumiendo demasiados recursos y le da la posibilidad de detener su ejecución.

A pesar de todo, existen alternativas para poder saltarse algunas de las limitaciones anteriores. La alternativa más utilizada y conocida consiste en firmar digitalmente el script y solicitar al usuario el permiso para realizar esas acciones.


Veamos un poco de JavaScript



Crear un objeto en javaScript es tan sencillo como:


var vehiculo={};


Si queremos añadirle propiedades con valores podemos hacerlo de varias formas:

Le podemos añadir las propiedades al momento de crear el propio objeto:

var vehiculo={
marca:"Chevrolet",
referencia:"Camaro ZL1",
placa:"XYZ 123",
modelo:2016
}

Tambien podemos añadirselas una vez creado el objeto:

var vehiculo={};
vehiculo.marca="Chevrolet";
vehiculo.referencia="Camaro ZL1";
vehiculo.placa="XYZ 123";
vehiculo.modelo=2016;

O inclusive mediante un constructor


function Vehiculo() {
this.marca="Chevrolet";
this.referencia="Camaro ZL1";
this.placa="XYZ 123";
this.modelo=2016;
}
  
var vehiculo=new Vehiculo();

También les podemos añadir funciones:

Al crear el propio objeto:

var vehiculo={
marca:"Chevrolet",
referencia:"Camaro ZL1",
placa:"XYZ 123",
modelo:2016
getDescripcionCompleta:function() {
return this.marca+this.referencia;
}
}

Una vez creado el objeto:

var vehiculo={};
   
vehiculo.marca="Chevrolet";
vehiculo.referencia="Camaro ZL1";
vehiculo.placa="XYZ 123";
vehiculo.modelo=2016;
vehiculo.getDescripcionCompleta=function() {
return this.marca+this.referencia;
};

Mediante un constructor

function Vehiculo() {
this.marca="Chevrolet";
this.referencia="Camaro ZL1";
this.placa="XYZ 123";
this.modelo=2016;
this..getDescripcionCompleta=function() {
return this.marca+this.referencia;
};
}
  
var vehiculo=new Vehiculo();


Funciones


Hay unas formas de crear funciones

La forma clásica

function sumar(a,b) {
return a+b;
}
  
var c=sumar(1,2);

Crear una funcion como una variable

var sumar=function (a,b) {
return a+b;
}
  
var c=sumar(1,2);

Podemos hacer funciones que retornan funciones y llamarlas directamente.

function getFunction() {
var sumar=function (a,b) {
return a+b;
}
return sumar;
}
  
var c=getFunction()(1,2);

Closure

Ahora vamos a ver una de las cosas mas raras para un programador Java. Una closure. Inicialmente es como un simple puntero a una función, algo como lo que ya existía en C, pero hay algo más. Veamos el siguiente ejemplo:



function getFunction() {
var extra=100;
var sumar=function (a,b) {
return a+b+extra;
}
return sumar;
}
  
var sumaClosure=getFunction();
var c=sumaClosure(1,2);

Al ejecutar el ejemplo , la variable c vale 103. Igual no te parece raro pero cuando se está ejecutando la función sumaClosure,ya no debería existir la variable extra pero si que existe y la función sumaClosure aun puede usar su valor aun cuando ya no estamos dentro de getFunction. Es es realmente una closure. Una función que se ejecuta en el contexto de donde se creo no donde está ahora. Puede parecer que esto es poco útil, pero con tanta llamada asíncrona en JavaScript es realmente útil.

El ejemplo lo podemos liar un poco mas añadiendo nuevas variables llamadas extra y veremos como no afecta al resultado, éste sigue siendo 103:


var extra=1000;
  
function getFunction() {
  
  var extra=100;
  
  var sumar=function (a,b) {
    return a+b+extra;
  }
  
  return sumar;
}
  
extra=1100;
  
var fn=getFunction();
  
extra=1200;
  
var c=fn(1,2);


Espero estos conocimiento básicos sean de utilidad para iniciación de lenguajes de programación del lado del cliente, Proximamente estare publicando un tutorial de AngularJS.

miércoles, 22 de julio de 2015

Resumen FairColombia 2015

Saludos a todos
Esta entrada no tendrá mucha relación con temas de programación, esta es una entrada sencilla en donde les compartiré un vídeo de resumen del ultimo día de  FairColombia

¿Qué es F-AIR COLOMBIA 2015?

Es la plataforma para que empresas representativas del sector se reúnan a presentar los avances y actualizaciones, en el área civil y de defensa. F-AIR COLOMBIA se consolida como el evento especializado de la industria aeronáutica en el país.

Colombia como un referente importante del sector en la región, posiciona a F-AIR COLOMBIA 2015, como una excelente oportunidad para generar nuevos vínculos comerciales y de negocios en el ámbito nacional e internacional, mediante el contacto directo con el público objetivo y clientes potenciales.

Eventos en F-AIR COLOMBIA:
Muestra comercial.
Exposición de aeronaves.
Shows aéreos.
Jornadas académicas.
Espacios de networking.


Sin mas comentarios les dejo el siguiente vídeo de la espectacular muestra aerea que se pudo apreciar en el ultimo dia, a mi parecer lo mejor  fueron las acrobacias aereas de los helicopteros, espero lo disfruten.




No olvides compartir la entrada y/o darle me gusta al Video



sábado, 23 de mayo de 2015

Netbeans y MySql - Instalacion y Test de Conexion (Video)

En esta nueva entrada de DatoByte les quiero enseñar acerca del proceso de instalación de Mysql y de Netbeans (Incluyendo la Instalación del JDK), adicional a ello se realiza una prueba de conexión desde Netbeans permitiendo ejecutar funciones CRUD en Mysql

CRUD: Crear, Obtener, Actualizar y Borrar (del original en inglés: Create, Read, Update and Delete)

En esta ocasión lo realizare mediante un videotutorial, espero sea de su gusto.


He comenzado por el proceso mas básico el cual es la instalación y conexión para proceder a crear en un proximo video un tutorial de un proyecto web y luego incluiré algo de webservices.

Posibles framework y herramientas a utilizar serian Spring, Netbeans, MySQL, Jersey (para los webservices)

Este es mi primer videotutorial, espero sea de vuestro agrado, de paso agradezco los likes del video.