- 6
Agreganos a tus Favoritos Recomiendanos a tus amigos Página de inicio
 Manuales
 SQL
 Flash 5
 HTML
 Dreamweaver
 Fireworks
 JavaScript
 C# y .NET
 PHP
 Artículos
 .NET (4)
 ActiveX (1)
 ADO (1)
 ASP (11)
 Bases de Datos (2)
 CGI (1)
 CSS (1)
 Diseño Grafico (2)
 HTML (9)
 Java (2)
 JavaScript (8)
 PHP (9)
 VBScript (2)
 Wap-WML (2)
 XML (6)
Herramientas
 Meta Tags
 Generador Popups
 Generador CSS
 Generador Scrollbar
 Listas despegables
 Html Inspector
 Colores
 Generador de Menu
 Generador Flash
 Convertidor
Servicios
 Diseño Web
 Hosting
 Buscadores
 Buscar Dominio
 Comunidad
 Foros
 Hosting Gratuito
 E-Mail Grátis
 Descargas
 Directorio
 Referencias
 Enlaces
 Colabora
 Publicidad
 Contactanos
 Referirnos
 Patrocinadores

    
 Tutorial SQL Autor: Claudio Casares

9. Consultas de Unión Internas

Las vinculaciones entre tablas se realiza mediante la cláusula INNER que combina registros de dos tablas siempre que haya concordancia de valores en un campo común. Su sintaxis es:

    SELECT campos FROM tb1 INNER JOIN tb2 ON tb1.campo1 comp tb2.campo2

En donde:

tb1, tb2

Son los nombres de las tablas desde las que se combinan los registros.

campo1, campo2

Son los nombres de los campos que se combinan. Si no son numéricos, los campos deben ser del mismo tipo de datos y contener el mismo tipo de datos, pero no tienen que tener el mismo nombre.

comp

Es cualquier operador de comparación relacional : =, <, >, <=, >=, o <>.

Se puede utilizar una operación INNER JOIN en cualquier cláusula FROM. Esto crea una combinación por equivalencia, conocida también como unión interna. Las combinaciones Equi son las más comunes; éstas combinan los registros de dos tablas siempre que haya concordancia de valores en un campo común a ambas tablas. Se puede utilizar INNER JOIN con las tablas Departamentos y Empleados para seleccionar todos los empleados de cada departamento. Por el contrario, para seleccionar todos los departamentos (incluso si alguno de ellos no tiene ningún empleado asignado) se emplea LEFT JOIN o todos los empleados (incluso si alguno no está asignado a ningún departamento), en este caso RIGHT JOIN.

Si se intenta combinar campos que contengan datos Memo u Objeto OLE, se produce un error. Se pueden combinar dos campos numéricos cualesquiera, incluso si son de diferente tipo de datos. Por ejemplo, puede combinar un campo Numérico para el que la propiedad Size de su objeto Field está establecida como Entero, y un campo Contador.

El ejemplo siguiente muestra cómo podría combinar las tablas Categorías y Productos basándose en el campo IDCategoria:

    SELECT Nombre_Categoría, NombreProducto
    FROM Categorias INNER JOIN Productos
    ON Categorias.IDCategoria = Productos.IDCategoria;

En el ejemplo anterior, IDCategoria es el campo combinado, pero no está incluido en la salida de la consulta ya que no está incluido en la instrucción SELECT. Para incluir el campo combinado, incluir el nombre del campo en la instrucción SELECT, en este caso, Categorias.IDCategoria.

También se pueden enlazar varias cláusulas ON en una instrucción JOIN, utilizando la sintaxis siguiente:

    SELECT campos
    FROM tabla1 INNER JOIN tabla2
    ON tb1.campo1 comp tb2.campo1 AND
    ON tb1.campo2 comp tb2.campo2) OR
    ON tb1.campo3 comp tb2.campo3)];

También puede anidar instrucciones JOIN utilizando la siguiente sintaxis:

    SELECT campos
    FROM tb1 INNER JOIN
    (tb2 INNER JOIN [( ]tb3
    [INNER JOIN [( ]tablax [INNER JOIN ...)]
    ON tb3.campo3 comp tbx.campox)]
    ON tb2.campo2 comp tb3.campo3)
    ON tb1.campo1 comp tb2.campo2;

Un LEFT JOIN o un RIGHT JOIN puede anidarse dentro de un INNER JOIN, pero un INNER JOIN no puede anidarse dentro de un LEFT JOIN o un RIGHT JOIN.

Ejemplo

    SELECT DISTINCTROW Sum([Precio unidad] * [Cantidad]) AS [Ventas],
    [Nombre] & " " & [Apellidos] AS [Nombre completo] FROM [Detalles de pedidos],
    Pedidos, Empleados, Pedidos INNER JOIN [Detalles de pedidos] ON Pedidos.
    [ID de pedido] = [Detalles de pedidos].[ID de pedido], Empleados INNER JOIN
    Pedidos ON Empleados.[ID de empleado] = Pedidos.[ID de empleado] GROUP BY
    [Nombre] & " " & [Apellidos];

    Crea dos combinaciones equivalentes: una entre las tablas Detalles de pedidos y Pedidos, y la otra entre las tablas Pedidos y Empleados. Esto es necesario ya que la tabla Empleados no contiene datos de ventas y la tabla Detalles de pedidos no contiene datos de los empleados. La consulta produce una lista de empleados y sus ventas totales.
Si empleamos la cláusula INNER en la consulta se seleccionarán sólo aquellos registros de la tabla de la que hayamos escrito a la izquierda de INNER JOIN que contengan al menos un registro de la tabla que hayamos escrito a la derecha. Para solucionar esto tenemos dos cláusulas que sustituyen a la palabra clave INNER, estas cláusulas son LEFT y RIGHT. LEFT toma todos los registros de la tabla de la izquierda aunque no tengan ningún registro en la tabla de la izquierda. RIGHT realiza la misma operación pero al contrario, toma todos los registros de la tabla de la derecha aunque no tenga ningún registro en la tabla de la izquierda.
 
 
Volver
Incio
Salir
Siguiente

eBay | Loans | TV Links | The eBay Song | Credit Card

  Enlaces | Colabora  | Publicidad  | Contactanos  | Referirnos

   © 2006 ANCER Network S.A. - Todos los derechos reservados.