You are on page 1of 9

Inicio

Articulos y noticias

Programacion

Bases de datos

Foros

Internet

Servicios

Contratacion

Email

Mapa

.NET
Introduccin a.NET Conceptos generales .NET Tutorial C# LinQ WCF

Consultas combinadas. JOINS


Consultas combinadas.
Habitualmente cuando necesitamos recuperar la informacin de una base de datos nos encontramos con que dicha informacin se encuentra repartida en varias tablas, referenciadas a travs de varios cdigos. De este modo si tuvieramos una tabla de ventas con un campo cliente, dicho campo contendra el cdigo del cliente de la tabla de cliente. Sin embargo est forma de almacenar la informacin no resulta muy util a la hora de consultar los datos. SQL nos proporciona una forma facil de mostrar la informacin repartida en varias tablas, las consultas combinadas o JOINS. Las consultas combinadas pueden ser de tres tipos: Combinacin interna Combinacin externa Uniones
[arriba]

Contenido
Consultas combinadas. Combinacin interna. Combinacin Externa Union

SQL
Tutorial SQL

SQL Server
Tutorial de TransactSQL

ORACLE
Tutorial PL/SQL

Reina Roja
Humor Bibliografia Acerca de ...

Combinacin interna.
La combinacin interna nos permite mostrar los datos de dos o ms tablas a travs de una condicin WHERE. Si recordamos los ejemplos de los capitulos anteriores tenemos una tabla de coches, en la que tenemos referenciada la marca a travs del cdigo de marca. Para realizar la consulta combinada entre estas dos tablas debemos escribir una consulta SELECT en cuya clasula FROM escribiremos el nombre de las dos tablas, separados por comas, y una condicin WHERE que obligue a que el cdigo de marca de la tabla de coches sea igual al cdigo de la tabla de marcas. Lo ms sencillo es ver un ejemplo directamente:

International SEO Brand Tracking Competitor Analysis Online Reputation Linkbuilding SEO Content Linkbaiting Content Translation Regional Domain

SELECT tCoches.matricula, tMarcas.marca, tCoches.modelo, tCoches.color, tCoches.numero_kilometros, tCoches.num_plazas FROM tCoches, tMarcas WHERE tCoches.marca = tMarcas.codigo

La misma consulta de forma "visual" ...

Demonos cuenta que hemos antepuesto el nombre de cada tabla a el nombre del campo, esto no es obligatorio si los nombres de campos no se repiten en las tablas, pero es acondajable para evitar conflictos de nombres entre campos. Por ejemplo, si para referirnos al campo marca no anteponemos el nombre del campo la base de datos no sabe si queremos el campo marca de la tabla tCoches, que contiene el cdigo de la marca, o el campo marca de la tabla tMarcas, que contiene el nombre de la marca. Otra opcin es utilizar la clusula INNER JOIN. Su sintaxis es identica a la de una consulta SELECT habitual, con la particularidad de que n la clusula FROM slo aparece una tabla o vista, aadiendose el resto de tablas a travs de clusulas INNER JOIN .

SELECT [ALL | DISTINCT ] <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla> [{INNER JOIN <nombre_tabla> ON <condicion_combinacion>}] [WHERE <condicion> [{ AND|OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND|OR <condicion>}]] [ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC] [{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]]

El ejemplo anterior escrito utilizando la clausula INNER JOIN quedaria de la siguiente manera:

SELECT tCoches.matricula, tMarcas.marca, tCoches.modelo, tCoches.color, tCoches.numero_kilometros, tCoches.num_plazas FROM tCoches INNER JOIN tMarcas ON tCoches.marca = tMarcas.codigo

La clusula INNER JOIN permite separar completamente las condiciones de combinacin con otros criterios, cuando tenemos consultas que combinan nueve o diez tablas esto realmente se agradece. Sin embargo muchos programadores no son amigos de la clusula INNER JOIN, la razn es que uno de los principales gestores de bases de datos, ORACLE, no la soportaba. Si nuestro porgrama debia trabajar sobre bases de datos ORACLE no podiamos utilizar INNER JOIN. A partir de la version ORACLE 9i oracle soporta la clusula INNER JOIN.
[arriba]

Combinacin Externa
La combinacin interna es excluyente. Esto quiere decir que si un registro no cumple la condicin de combinacin no se incluye en los resultados. De este modo en el ejemplo anterior si un coche no tiene grabada la marca no se devuelve en mi consulta. Segn la naturaleza de nuestra consulta esto puede ser una ventaja , pero en otros casos significa un serio problema. Para modificar este comportamiento SQL pone a nuestra disposicin la combinacin externa. La combinacin externa no es excluyente. La sintaxis es muy parecida a la combinacin interna,

SELECT [ALL | DISTINCT ] <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla> [{LEFT|RIGHT OUTER JOIN <nombre_tabla> ON <condicion_combinacion>}] [WHERE <condicion> [{ AND|OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND|OR <condicion>}]] [ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC] [{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]]

La combinacin externa puede ser diestra o siniestra, LEFT OUTER JOIN o RIGHT OUTER JOIN. Con LEFT OUTER JOIN obtenemos todos los registros de en la tabla que situemos a la izquierda de la clausula JOIN, mientras que con RIGHT OUTER JOIN obtenmos el efecto contrario. Como mejor se ve la combinacin externa es con un ejemplo.

SELECT tCoches.matricula, tMarcas.marca, tCoches.modelo, tCoches.color,

tCoches.numero_kilometros, tCoches.num_plazas FROM tCoches LEFT OUTER JOIN tMarcas ON tCoches.marca = tMarcas.codigo Esta consulta devolver todos los registros de la tabla tCoches, independientemente de que tengan marca o no. En el caso de que el coche no tenga marca se devolver el valor null para los campos de la tabla tMarcas. Visualmente (la consulta devuelve los datos en azul) ...

El mismo ejemplo con RIGHT OUTER JOIN.

SELECT tCoches.matricula, tMarcas.marca, tCoches.modelo, tCoches.color, tCoches.numero_kilometros, tCoches.num_plazas FROM tCoches RIGHT OUTER JOIN tMarcas ON tCoches.marca = tMarcas.codigo

Esta consulta devolver los registros de la tabla tCoches que tengan marca relacionada y todos los registros de la tabla tMarcas, tengan algn registro en tCoches o no. Visualmente (la consulta devuelve los datos en azul) ...

[arriba]

Union
La clusula UNION permite unir dos o ms conjuntos de resultados en uno detras del otro como si se tratase de una nica tabla. De este modo podemos obtener los registros de mas de una tabla "unidos". La sintaxis corresponde a la de varias SELECT unidas a travs de UNION, como se muestra a continuacin:

SELECT [ALL | DISTINCT ] <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla> [{LEFT|RIGHT OUTER JOIN <nombre_tabla> ON <condicion_combinacion>}] [WHERE <condicion> [{ AND|OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND|OR <condicion>}]] { UNION [ALL | DISTINCT ] SELECT [ALL | DISTINCT ] <nombre_campo> [{,<nombre_campo>}] FROM <nombre_tabla> [{LEFT|RIGHT OUTER JOIN <nombre_tabla> ON <condicion_combinacion>}] [WHERE <condicion> [{ AND|OR <condicion>}]] [GROUP BY <nombre_campo> [{,<nombre_campo >}]] [HAVING <condicion>[{ AND|OR <condicion>}]]

} [ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC] [{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]]

Para utilizar la clausula UNION debemos cumplir una serie de normas. Las consultas a unir deben tener el mismo nmero campos, y adems los campos deben ser del mismo tipo. Slo puede haber una nica clausula ORDER BY al final de la sentencia SELECT. El siguiente ejemplo muestra el uso de UNION

SELECT tCoches.matricula, tMarcas.marca, tCoches.modelo, tCoches.color, tCoches.numero_kilometros, tCoches.num_plazas FROM tCoches INNER JOIN tMarcas ON tCoches.marca = tMarcas.codigo UNION SELECT tMotos.matricula, tMarcas.marca, tMotos.modelo, tMotos.color, tMotos.numero_kilometros, 0 FROM tMotos INNER JOIN tMarcas ON tMotos.marca = tMarcas.codigo; Puede observarse el uso de la constante cero en la segunda lista de seleccin para hacer coincidir el nmero y tipo de campos que devuelve la consulta UNION.

Valorar el contenido:

Fecha de alta:22/10/2005 Visitas totales:234025

ltima actualizacion:22/10/2005

Inicio |Indice

Version para imprimir

Aadir comentario:
Autor: Titulo:

Enviar comentario

#192

y qu es ms rpido Hola! Buenas explicaciones. Estoy haciendo un proyecto en el que es sumamnete importante el rendimiento. Si necesito combinar 3 tablas, qu tipo de consulta es ms rpida? Gracias.

marisol 26/07/2007 13:21:26 #265 Observacion union en el union del ejemplo final, segundo select dice FROM tCoches, no seria mas bien tMotos? Saludos, muy bueno el tutorial, lo estoy siguiendo de a pocos CarlosHV 03/09/2007 16:10:07 #267 Gracias CarlosHV, visto y corr... Gracias CarlosHV, visto y corregido.

Devjoker 04/09/2007 4:56:16

#272

Excelente, Sigue adelante, Excelente curso

Manuel R. Bercian 05/09/2007 20:21:54 #293 Ayudame!! Hola CarlosHv veo q ya tienes conocimientos intermedios espero me puedas orientar apenas inicio en esto te dejo mi correo: alan_pr_18@hotmail.com espero me agregues y podamos intercambiar conocimientos

CarlosHV 12/09/2007 13:11:12 #295 ayudame Hola CarlosHv veo q ya tienes conocimientos intermedios espero me puedas orientar apenas inicio en esto te dejo mi correo: alan_pr_18@hotmail.com espero me agregues y podamos intercambiar conocimientos

alan 12/09/2007 13:11:48 #301 buenos hola .. es muy bueno esta bien explicado kisiera saber si sql2005 es igual a oracle

karolina 15/09/2007 14:25:33 #547 GRACIAS MUCHISIMAS GRACIAS, MUY BUENOS LOS EJEMPLOS EXPUESTOS, ME FUERON MUY UTILES

LUIS mENDOZA 15/01/2008 15:51:06 #668 QUISIERA CONOCER MAS QUE MANUAL ME RECOMIENDAN PARA CONOCER MAS SOBRE SQL SERVER 2005 YA QUE ESTOY EMPEZANDO DE DBA Y LA VERDAD QUISIERA SABER MAS PARA TENER MAS CONFIANZA apg_29@hotmail.com

GRACIAS ALFONSO 24/02/2008 19:30:03 #996 Que pasa aqui? SELECT prh.segment1 NUM_REQ ,prl.item_description descripcion ,prd.requisition_line_id -- TEMPORAL ,pd.req_distribution_id -- TEMPORAL FROM po_requisition_headers_all prh RIGHT OUTER JOIN po_requisition_lines_all prl ON prh.requisition_header_id = prl.requisition_header_id RIGHT OUTER JOIN po_req_distributions_all prd ON prl.requisition_line_id = prd.requisition_line_id RIGHT OUTER JOIN po_distributions_all pd ON prd.distribution_id = pd.req_distribution_id WHERE TRUNC(prh.creation_date) >= :fecha_ini AND TRUNC(prh.creation_date) <= :fecha_fin AND prh.segment1 >= nvl(:P_REQ_INI,prh.segment1) --RANGO DE LA REQUISICION AND prh.segment1 <= nvl(:P_REQ_FIN,prh.segment1) --RANGO DE LA REQUISICION en la consulta anterior, la tabla pd ya no trae registro coincidenete y a pesar de ser un outer (incluyente) no muestra el registro, tal vez mi sintaxis este mal, espero que alguien pueda darme un tip. Gustavo 15/05/2008 9:57:33 #1498 Como seria esta? Lo que tengo que hacer es esto: Mostrar la nota del periodo "marzo/abril" de la materia "base de datos" de todos los alumnos del grupo "3Iz", ordenando la consulta por periodo y por materia. Las tablas son estas: Rendimientos(Numero, grupo, codmateria, periodo, nota) Materias(codmateria, Nombre) alumnos(numero,grupo, ci, nombre, apellido, fecha_nac)

Por favor es urgente para maana. gracias germ8n 23/09/2008 14:40:49

#1525

que mier... esto pa que sirve no ehhh que perez...

cristian daiel 26/09/2008 16:10:18 #1531 NECESITO DEDO QUIEN ME PUEDE DECIR COMO HACER UN DEDO POR CODIGO SQL???

oscar d'gay 26/09/2008 16:21:11 #1670 Esto est excelente La verdad que es la primera vez que veo una teoria completa del funcionamiento de JOINS, porque por otros lados esto nunca se llega a entender del todo bien y por eso que no se utiliza adecuadamente.

Edu 2008 24/10/2008 17:01:10 #1723 para Edu 2008 Te pasas de lanza, como eres huvon para investigar las combinaciones, yo las aprendi solo sin tutoriales, este tutorial es efectivo para la memoria, pero la inteligencia es otra cosa.........

Mr.X 03/11/2008 20:14:44 #1756 esta muy bueno, se agradece. ... esta muy bueno, se agradece. saludos Annimo 09/11/2008 15:25:44 #1952 Muchas gracias... Muchas gracias

Annimo 04/01/2009 12:13:51 #1967 Gracias El material esta muy bien preparado, esta con fundamento y muy util. Muchas gracias !

Luis Diego - Costa Rica 07/01/2009 12:28:19 #2252 SUPER SUPER EL TUTORIAL ME A SERVIDO MUXO SALUDOS

GR4X P0R LA AYUDA 18/03/2009 1:18:22 #2451 Lo maximo!! Muy bueo tu tutorial,necesitaba urgentemente un repaso y me has salvado la viduuu!!... saludos.

Richard - Peru 12/05/2009 13:23:16 #2535 venezuela gram ayuda hermano esto ear l oque necesitaba

gary 02/06/2009 18:50:31 #2538 consulta Como se resuelve la consulta siguiente: a cuantos pedidos se les otorgo el 5% de escuento (no repetidos)

rG 03/06/2009 14:18:18 #2590 consulta_ Suponiendo que tengas una columna de descuento donde contenga un entero seria algo as... SELECT distinct(pedidos.columna) FROM pedidos WHERE pedidos.descuento = 5; Sergio 16/06/2009 6:01:17 #2632 muy bue manual... muy bue manual

manuel 24/06/2009 16:41:49 #2739 Excelentee!!! Este tutorial es espectacular

xuser83 21/07/2009 17:22:20 #2800 Chido Muy buena explicacion.

Linkecubeko 10/08/2009 11:15:24 #2854 FELICITACIONES POR EL TUTORIAL... FELICITACIONES POR EL TUTORIAL, ESTA MUY BIEN EXPLICADO Y FACIL DE ENTENDER, ANIMA A SEGUIR LEYENDO TODO!!!

sabanero 26/08/2009 16:03:15 #2855 . . . . .. . . . . . . . . . .... . . . . .. . . . . . . . . . . ,.-. . . . . . . . . .``~., . . . . . . . .. . . . . .,.-. . . . . . . . . . . . . . . . . .-., . . . . .. . . . . . ..,/. . . . . . . . . . . . . . . . . . . . . . . :, . . . . . . . .. .,?. . . . . . . . . . . . . . . . . . . . . . . . . . .\, . . . . . . . . . /. . . . . . . . . . . . . . . . . . . . . . . . . . . . ,} . . . . . . . . ./. . . . . . . . . . . . . . . . . . . . . . . . . . ,:`^`.} . . . . . . . ./. . . . . . . . . . . . . . . . . . . . . . . . . ,:. . . ./ . . . . . . .?. . . __. . . . . . . . . . . . . . . . . . . . :`. . . ./ . . . . . . . /__.(. . .~-,_. . . . . . . . . . . . . . ,:`. . . .. ./ . . . . . . /(_. . ~,_. . . ..~,_. . . . . . . . . .,:`. . . . _/ . . . .. .{.._$;_. . .=,_. . . .-,_. . . ,.-~-,}, .~; /. .. .} . . .. . .((. . .*~_. . . .=-._. . .;,,./`. . / . . . ./. .. ../ . . . .. . .\`~,. . ..~.,. . . . . . . . . ..`. . .}. . . . . . ../ . . . . . .(. ..`=-,,. . . .`. . . . . . . . . . . ..(. . . ;_,,- . . . . . ../.`~,. . ..`-.. . . . . . . . . . . . . . ..\. . /\ . . . . . . \`~.*-,. . . . . . . . . . . . . . . . . ..|,./.....\,__ ,,_. . . . . }.>-._\. . . . . . . . . . . . . . . . . .|. . . . . . ..`=~-, . .. `=~-,_\_. . . `\,. . . . . . . . . . . . . . . . .\ . . . . . . . . . .`=~-,,.\,. . . . . . . . . . . . . . . .\ . . . . . . . . . . . . . . . . `:,, . . . . . . . . . . . . . `\. . . . . . ..__ . . . . . . . . . . . . . . . . . . .`=-,. . . . . . . . . .,%`>--==`` . . . . . . . . . . . . . . . . . . . . _\. . . . . ._,-%. . . ..`\. ALFIN ENTIENDO, MIS PROFESORES NO SABIAN EXPLICAR UN CARAJO

QueFacilEraEsto 26/08/2009 16:05:08 #3170 Amigazoooo... muy claras sus e... Amigazoooo... muy claras sus explicaciones, se agradece que comparta su conocimiento con el resto quienes partimos con esto. Saludos

Strong 28/11/2009 15:40:06 #3195 Good Muy bueno, me sirvio bastante! esque es un desmadre de los joins y no joins! pero si gracias.!!!

Raptor 08/12/2009 18:15:16 #3837 quien me puede decir como uno la tabla de asistenc quien me puede decir como uno la tabla de asistencia y clientes sabiendo que nombre es de la tabla de clientes y documento y fecha son de asistencia

10/05/2010 9:56:33 #3910 registros de ambas tablas Buen tuto, una duda, el left outer trae todos los registros de la tabla de la izquierda, el right outer trae todos los registros de la tabla de la derecha, pero, si quisiera todos los registros de las dos tablas?

Gustavo 23/05/2010 12:32:39 #3912 @Gustavo: Para traer los registros de las dos tabl @Gustavo: Para traer los registros de las dos tablas - existe el FULL JOIN -, pero no todas las bases de datos las soportan. Otra solucion es un LEFT JOIN + UNION + RIGHT JOIN

Devjoker 24/05/2010 7:33:57 #3949 Gracias!! Gracias por la ayuda amigo! :D

Alex de la Rosa 01/06/2010 14:01:10 #4114 muy buenos ejemplos Muchas gracias por la explicacin esta bastante buena, ha sido de gran ayuda. :D

aura 07/07/2010 14:46:21 #4136 consulta hola espero y me pueda resolver la duda soy nueva en esto y pues quiero saber como ago una consulta usando joins para k me muestre el numero de empleados , nombre de empleados ,numero de jefe, nombre de su jefe bueno espero y puedan contaestar es de vida o muerte

jejejje saludos y gracias jazmin 14/07/2010 17:06:26 #4431 consulta anidada? Hola tengo una tabla FICHA (Campos AUTOR, TITULO )y otra tabla MATERIA (campo TEMA)que estn relacionadas. hice consulta para buscar tema con condicin LIKE para buscar cualquier tema, le hice una macro para no tener que cerrar la consulta y me permita volver a preguntar. Pregunta: cmo hago para que una vez que me trae tema elegido con campo autor y ttulo, pueda ahora afinar la bsqueda trayendo de ese tema tal autor. Gracias

Adriana 30/09/2010 10:52:56 #4465 TUTORIAL SQL ESTA MUY BUENO EL TUTORIAL. PUEDES ENVIARMELO EN FORMATO .DOC ESTE ES MI CORREO henricuevaj@yahoo.es

HENRI CUEVA 09/10/2010 10:24:52 #4480 agrupar tablas hola mira necesito agrupar tabalas con join left join y rigth join. la verdad no entiendo mux bien. agradezco me faciliten unos ejemplos mas especificados gracias

gamp 14/10/2010 6:31:11 #4495 xD Algo esta maso o menos xD

Buena 19/10/2010 13:08:29 #4607 jolin soy complicado Tengo una consulta. A ver tengo una tabla con los articulos y otras con opciones o colores, de acuerdo.Hasta ahora con un nivel medio de php desarrollo bien con una consulta por cada vuelta de la primera consulta. Pero lo que yo quiero en realidad, es en la misma consulta sacar el articulo y todas sus opciones, colores, lo malo y dificil es que como el numero de opciones es dinamico lo guardo todo en una columna separandolo con , y luego hago un explode.....jejje perdonad por la paliza......la cosa esta en que quiero consultar en sql esto: SACAME EL ARTICULO Y TODAS LAS OPCIONES QUE ESTEN EN LA CADENA DE LA VINCULACION.....ES posible.....se juntar dos tablas basicamente, buscar difrentes buscar iguales,, pero que hacemos cuando la segunda tabla tiene varios resultados variables...uffff ayuda porfavor.... mi mail es fagunjo@gmail.com agradezco un celebro que me diga si es posible y como.

cirus123 17/11/2010 6:58:55 #4618 consultas hola gracias por la informacion, tambien estoy buscando sobre group by, having y agregacion

sagitariomrgt 19/11/2010 11:13:41 #4656 necesito que alguien me ayude con: nesecito sacar unos datos(d)=cod_3, que se encontraria en la tabla_ 3. que es la conjuncion de la tabla_1 y la tabla_2 que entre ellas no estan relacionadas. Ambas estan en la tabla_3 por su codigo y ambas se pueden repetir varias veces. entonces la tabla se ve asi: cod_3-- cod_2--cod_1 1 2 3 2 2 4 3 1 6 4 3 4 5 1 3 Necesito poder sacar un valor q se encuentre primero en cod_1 y filtre el segundo. y me de uno o varios resultados. Ayudenme.

nina 27/11/2010 23:02:06 #4702 gracias este ejemplo esta mas claro que los que encontrado en otras paginas..

lucero avila 13/12/2010 8:28:43 #4703 gracias este ejemplo esta mas claro que los que encontrado en otras paginas..

lucero avila 13/12/2010 8:29:33

#4709

dudas tengo una duda necesito mostrar registros de las siguientes tablas proyecto,alumnos,supervisor,objetivos,metas,actividad pero solo necesito mostrar los datos de los alumnos que no tienen registros en ninguna de las otras tablas

Raul Antonio 15/12/2010 18:29:25 #4732 Excelent..! Excelent..!

23/12/2010 12:27:04 #4803 17/01/2011 16:11:59 #4944 Full Join No se como puedo unir 3 o mas Full Join. Gracias de antemano

Luciano 24/02/2011 2:48:36 #4986 Me encanta esta web Soy ingeniero informtico y esta web me permite tener una gua rpida y accesible para consultar o refrescar conceptos en cualquier momento. Muchas gracias, es un gran trabajo. Manuel 09/03/2011 12:45:58 #4999 H:P Hij. de Put..por fin entiendo caraj..!!!!!

Kpax 14/03/2011 7:42:16 #5003 LA MASA la mejor explicacin que encontre en la web! excelente!

ALCI 15/03/2011 7:55:52 #5105 XD Excelente, ayudo bastante!!!Gracias!!

DXD 15/04/2011 8:38:55 #5119 tengo ke hacer 30 cosultas gracias pos su ayuda tengo ke hacer 30 cosultas gracias pos su ayuda

juanitzzx 18/04/2011 15:38:37 #5149 no hay nada aquiiiiiiiiiiiiiiiiiii oeeeeeeeee no hay nada aquiiiiiiiiiiiiiiiiiii oeeeeeeeee

27/04/2011 14:01:01 #5189 BUENISIMO ME PARECE SUPER BUENA ESTA PAGINA TIENE DATOS MUY UTILES PARA CUALQUIER PERSONA QUE NECESITE INF HACERCA DE LAS BD

LUZ 09/05/2011 23:14:40

Consultas combinadas. JOINS


Pedro Herrarte Snchez

Pedro Herrarte, es consultor independiente, ofreciendo servicios de consultora, anlisis, desarrollo y formacin. Posee mas de diez aos de experiencia trabajando para las principales empresas de Espaa. Es especialista en tecnologas .NET, entornos Web, bases de datos (SQL Server y ORACLE) e integracin de sistemas. Es experto en desarrollo (C#, ASP.NET, VB.Net, T-SQL, PL/SQL, , ASP, CGI , C, Pro*C, Java, Essbase, Vignette, PowerBuilder y Visual Basic ...) y bases de datos (SQL Server y ORACLE). Es fundador, diseador y programador de
www.devjoker.com.

www.devjoker.com - .NET y ms

You might also like