Desinstalar Visual Studio 2008

31 10 2009

Hola muchachos, cuando tuve un problema con la PC en la empresa donde hago unos trabajitos tuve finalmente que intentar desinstalar el Visual Studio 2008, y si alguna vez lo has intentado comprenderás que no es nada fácil, resultar una tarea algo aterradora por decirlo así, ya que  nunca quedarás libre del todo al sacar los componentes siempre quedará alguno que no saques y esta además ese miedo si!! de ese mismo te hablo, el que suena en tu cabeza y te pregunta cada que quieres darle desinstalar  a algo y preguntas… ¿Será del Visual o de otra cosa? mmmm, ¿Será compartido? ayyyy xD… ante esto buscando en Internet encontré una pequeña herramienta un programita que da la misma página de soporte de Microsoft y te permite desinstalar el Visual Studio 2008 completamente y de una manera limpia y ordenada (si porque para desinstalarlo de una manera correcta tiene que ser en un determinado orden), esto me solucionó el problema finalmente y también me ahorró algo de tiempo ahora se las quiero compartir, puedes descargarla de mi skydrive, espero que les sirva :D

Herramienta desinstalar Visual Studio 2008

Herramienta desinstalar Visual Studio 2005 (Beta)





Tipos de Join en T-SQL y como usarlos…

17 10 2009

Hola, después de un tiempo sin postear – lo siento cuestiones de tiempo :( – regreso con otra ayudita en lo que es Transact, bueno aunque esto no es propio del Transact sino del SQL en si, vamos a ver como son los tipos de Joins que por cierto son muy útiles hasta imprescindibles diría yo para implementar nuestras consultas, ya entramos al campo de las consultas multitabla y voy a plantear un par de estas (que aunque sin lógica) son de ejemplo para que puedan entender lo mejor posible como funcionan los tipos de Join.

Empezando les comentaré que en SQL tenemos tipos de Join que funcionarán en Transact, propio de MS SQL Server, y que sólo cambian ciertas partes de la sintaxis  para los demás lenguajes ojo todos al final hacen lo mismo, las bases son iguales, tenemos 2 tipos de Join (por definición almenos) los Joins Internos  o de Combinación interna (Inner Join) y los Joins Externos o Combinación externa (Outer Join) que a su vez tienen sus diferencias dentro de cada uno de ellos, quiero explicarlos con ejemplos y lo más sencillo posible, no me detendré mucho en la sintaxis sino en como funcionan y como los podrías usar, porque yo sé que llegaste desesperadamente a mi blog por mera casualidad pero buscando una ayudita y no que te enreden más la vida xD

Tipos de Join:

1. Internos (Inner Join)

  • De Equivalencia (Equi – Join)
  • Natural (Natural – Join)
  • Cruzado (Cross – Join)
  • En sí mismo (Self – Join)

2. Externos (Outer Join)

  • De tabla Izquierda (Left Outer Join)
  • De tabla Derecha (Right Outer Join)
  • Combinación completa (Full Outer Join)

Bueno empezaremos creando unas tablas son simples y quiero que sigas la lógica usaré letras para que al hacer las mezclas no te confundas y números para que sean fáciles de ubicar y entiendas que realiza cada consulta eso es lo más importante después tu podrás subirles el nivel de complejidad.

Creamos las tablas en nuestra Query de SQL Management Studio en una Base de datos que hayas creado.

- Tabla1 (IdLetra, Valor1)

- Tabla2 (IdLetra, Valor2)

- Tabla3 (IdLetra, Valor3)

- Tabla4 (IdLetra, Valor4)

CREATE TABLE Tabla1 (IdLetra varchar(5), Valor1 int)
CREATE TABLE Tabla2 (IdLetra varchar(5), Valor2 int)
CREATE TABLE Tabla3 (IdLetra varchar(5), Valor3 int)
CREATE TABLE Tabla4 (IdLetra varchar(5), Valor4 int)

Y le agregamos algunos valores para los ejemplos:

INSERT INTO TABLA1 VALUES ('A',1)
INSERT INTO TABLA1 VALUES ('B',2)
INSERT INTO TABLA1 VALUES ('C',3)
INSERT INTO TABLA1 VALUES ('D',4)
INSERT INTO TABLA1 VALUES ('E',5)
INSERT INTO TABLA1 VALUES ('F',6)

INSERT INTO TABLA2 VALUES ('A',10)
INSERT INTO TABLA2 VALUES ('B',20)
INSERT INTO TABLA2 VALUES ('C',30)
INSERT INTO TABLA2 VALUES ('D',40)
INSERT INTO TABLA2 VALUES ('E',50)
INSERT INTO TABLA2 VALUES ('F',60)

INSERT INTO TABLA3 VALUES ('A',7)
INSERT INTO TABLA3 VALUES ('B',8)
INSERT INTO TABLA3 VALUES ('C',9)
INSERT INTO TABLA3 VALUES ('D',10)
INSERT INTO TABLA3 VALUES ('E',11)
INSERT INTO TABLA3 VALUES ('F',100)
INSERT INTO TABLA3 VALUES ('G',200)

INSERT INTO TABLA4 VALUES ('A',12)
INSERT INTO TABLA4 VALUES ('B',13)
INSERT INTO TABLA4 VALUES ('C',14)
INSERT INTO TABLA4 VALUES ('D',15)
INSERT INTO TABLA4 VALUES ('E',16)
INSERT INTO TABLA4 VALUES ('H',300)
INSERT INTO TABLA4 VALUES ('I',400)

Te recomiendo hacerles un SELECT a las tablas para que las examines y comprendas mejor los ejemplos, además que en cada ejemplo hagas SELECT al mismo tiempo a  las tablas involucradas y puedas comparar el select de tus tablas con el resultado de las consultas de Join :D .

INNER JOIN

El Inner Join te permite combinar dos tablas mediante un campo en común  para hacer relaciones y consultas en este ejemplo vamos a utilizar un Inner Join para unir las tablas 1 y 2, Funciona así:

SELECT tabla.(campo que quieres mostrar)
FROM Tabla1 (Alias -opcional-)  INNER JOIN  Tabla2 (Alias – opcional-)
ON Tabla1(o Alias).NombreCampo(campo en común) <,>,= (comparación)  Tabla2(o Alias).NombreCampo(campo en común)

Se ve medio complicado asi, pero créeme que no lo es,  conserva este “molde” por decirlo así que te puede ayudar en tus dudas sobretodo si eres nuevo en esto, bueno ahora si vamos a hacerlo en Transact y vamos a relacionar las tablas 1 y 2 para que puedas ver como queda. Este ejemplo será el mismo lo haré primero con alias y luego sin alias:

Inner Join Tabla 1 y Tabla2 (con alias)

--Con Alias
SELECT * FROM Tabla1 T1 INNER JOIN Tabla2 T2 ON T1.IdLetra = T2.IdLetra

Inner Join Tabla 1 y Tabla2 (sin alias)

--Sin Alias
SELECT * FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.IdLetra = Tabla2.IdLetra

Como te das cuenta en la parte donde va el asterisco (*) es donde se piden los campos de las dos tablas relacionadas como ves aquí se trae todos los campos, pero si hubiera algunos en especifico que quieras mostrar escribes “tabla.campo” y eliges cuales quieres, mas adelante en esta consulta vemos que se escribe un nombre corto al costado del nombre de la tabla este es el Alias , luego de esto ya la tabla tiene asignado un nombre Alias y sólo se le llamará mediante este nombre corto igual que como se hacia con su nombre completo; finalmente vemos la comparación después de la palabra reservada ON que en este caso es “=” también podría ser >,<, etc.  como algo adicional al inicio también puedes usar el alias (en el lugar donde va el asterisco) de esta manera:

--Ejemplo
SELECT T1.Valor1,T2.Valor2,T2.IdLetra FROM Tabla1 T1 INNER JOIN Tabla2 T2 ON T1.IdLetra =T2.IdLetra

- De Equivalencia (Equi-Join)

En este tipo es una especie de theta-join donde se hace una comparación de Igualdad por lo tanto si el inner join es comparado con < , > estos no entrarían en esta categoría

--EQUI JOIN
SELECT * FROM Tabla1 INNER JOIN Tabla2 ON Tabla1.IdLetra=Tabla2.IdLetra

- Natural (Natural-Join)

Propiamente en T-SQL no se puede hacer Natural Join pero es simple de explicar, el Natural Join te da los valores y elimina los campos repetidos en la relación establecida quedando como el ejemplo donde especifique el uso de alias al principio de la Query, lo puedes ver aquí donde solo muestro uno de los dos campos  IdLetra, esto daría un Natural Join:

--NATURAL JOIN
SELECT T1.IdLetra ,T1.Valor1, T2.Valor2 FROM Tabla1 T1 INNER JOIN Tabla2 T2 ON T1.IdLetra =T2.IdLetra

- Cruzado (Cross-Join)

El Cross Join nos permite hacer un producto cartesiano entre las tablas que estamos comparando, también se puede dar de manera Implicita lo que llaman el operador proyección, al final funcionan igual:

---CROSS JOIN NORMAL
SELECT * FROM Tabla1 CROSS JOIN Tabla2
SELECT Tabla1.IdLetra,Tabla1.Valor1,Tabla2.Valor2 FROM Tabla1 CROSS JOIN Tabla2
---CROSS JOIN IMPLICITO
SELECT * FROM Tabla1 ,Tabla2
SELECT Tabla1.IdLetra,Tabla1.Valor1,Tabla2.Valor2 from Tabla1,Tabla2

- A sí misma (Self-Join)

Este es un tipo un tanto raro de Join pero quien sabe la necesidad de tus consultas y necesites implementarla en una, esta te permite hacer un producto cartesiano de la tabla pero consigo misma osea un Auto Cross Join:

--SELF JOIN
SELECT * FROM Tabla1 SELF JOIN Tabla1 ON Tabla1.IdLetra=Tabla1.IdLetra

OUTER JOIN

En el Outer Join la diferencia es que en este tipo de combinación se mantienen los valores que no tienen equivalente en la otra tabla, esto no sucede en el Inner Join que cuando las tablas no tienen valores equivalentes la relación botaría NULL en el resultado y este es omitido por defecto, hay maneras de conservarlos usando Inner Join especificando IsNull o Null, pero no nos compliquemos más, veamos los ejemplos del Outer Join  para esto relacionaremos las tablas 3 y 4 que contiene algunos valores sin equivalente en la otra, primero hagamos un Inner Join comprobando así que no nos dá los valores Null:

--INNER JOIN
SELECT * FROM Tabla3 INNER JOIN Tabla4 ON Tabla3.IdLetra = Tabla4.IdLetra

Como verás los valores sin equivalente son omitidos

-De Tabla Izquierda (Left Outer Join)

El Left Outer Join nos permite hacer una mezcla y conservar todos los valores de la tabla izquierda (la primera tabla que se menciona en la consulta) sin importar que no tengan equivalente con la de la derecha, veamos el ejemplo:

--LEFT OUTER JOIN
SELECT * FROM Tabla3 LEFT OUTER JOIN Tabla4 ON Tabla3.IdLetra = Tabla4.IdLetra

-De Tabla Derecha (Left Outer Join)

El Right Outer Join nos permite hacer una mezcla y conservar todos los valores de la tabla derecha (la segunda tabla que se menciona en la consulta) sin importar que no tengan equivalente con la primera, el caso contrario como ven, vamos al ejemplo:

--RIGHT OUTER JOIN
SELECT * FROM Tabla3 RIGHT OUTER JOIN Tabla4 ON Tabla3.IdLetra = Tabla4.IdLetra

-Combinación Completa  (Full Outer Join)

Con esta útlima nos permitirá hacer una mezcla total y conservar todos los valores de ambas tablas, los valores que no tengan equivalencia aparecerán  acompañados de un Null y se mostrán todos ellos, ejemplo:

--FULL OUTER JOIN
SELECT * FROM Tabla3 FULL OUTER JOIN Tabla4 ON Tabla3.IdLetra = Tabla4.IdLetra

Espero que te haya servido mucho este ejemplo porque aveces es un poco complicado entenderlo al principio, una vez captada la idea ya es sencillo y verás que no es nada del otro mundo…saludos :D





La Nueva Eficiencia – Registrate

24 09 2009

nuevaefi1

Entra y registrate con el link en la imagen, no te lo pierdas :D

nuevaefi2





Evento Comunidad SQL Server Perú

22 09 2009

 

flyer-26092009

Ampliar imagen:





Microsoft SQL Server Azure CTP

11 09 2009

Ya está disponible la CTP de SQL Server para servicios en Windows Azure, sólo registrate y espera que te envíen tu código de invitación así podrás ver que tal están las cosas en la nube  :D

Register for the CTP

SQL-Azure%20Logo_3