Crear una vista de múltiples tablas

Para tener acceso a información relacionada almacenada en tablas distintas, puede crear una vista y agregar dos o más tablas, o puede modificar una vista existente agregando tablas. Para agregar las tablas, puede usar el Diseñador de vistas o el comando CREATE SQL VIEW. Después de agregar las tablas, puede expandir su control de los resultados de la vista con la condición de combinación definida entre las tablas.

Para crear una vista de múltiples tablas

  • En el Administrador de proyectos, cree una vista y agregue las tablas que desee en el Diseñador de vistas.

    –O bien–

  • Abra una base de datos y use el comando CREATE SQL VIEW; agregue nombres de tabla a la cláusula FROM y condiciones de combinación.

    Cuando se agregan las tablas al comando CREATE SQL VIEW, se produce un producto cruzado. Tiene que especificar una condición de combinación en la cláusula FROM o en la cláusula WHERE de la instrucción para emparejar registros relacionados entre las tablas. Si existen relaciones persistentes entre las tablas, se usan automáticamente como condiciones de combinación.

Crear una vista remota de múltiples tablas

Cuando se conecte a un origen de datos remoto, éste puede contener muchas tablas relacionadas. Puede seleccionar las tablas que necesita y ajustar las relaciones entre ellas si es necesario, para obtener la información que necesita.

Para crear una vista remota de múltiples tablas

  1. En el menú Archivo, elija Nuevo, seleccione Vista remota y elija Nuevo archivo.
  2. En el cuadro de diálogo Seleccionar conexión u origen de datos, seleccione una conexión predefinida o un origen de datos disponible.
  3. Si es necesario, inicie una sesión en el servidor.
  4. En el cuadro de diálogo Abrir, seleccione las tablas que desee utilizar.
  5. En el cuadro de diálogo Condición de combinación, acepte la combinación predeterminada o defina una combinación según sea necesario.

Como ocurre con las vistas locales, puede usar las opciones que aparecen en la ficha Criterios de actualización del Diseñador de vistas para controlar cómo se realizan las actualizaciones a las tablas de origen.

Definir y modificar condiciones de combinación

Normalmente, para definir una condición de combinación se usan las relaciones establecidas en los campos de clave principal y clave externa entre las tablas. Por ejemplo, quizá desee buscar información acerca de los pedidos, como los datos del cliente que realizó el pedido. Puede crear una vista con las tablas Customer y Orders. Especifique una condición de combinación para comparar valores de los campos que tienen en común y, generalmente, devolver los que son iguales. En el ejemplo, Customer y Orders tienen un campo Customer ID.

Para definir condiciones de combinación en una vista

El código siguiente crea la nueva vista como se describe en el ejemplo anterior, usando la cláusula FROM para especificar las condiciones de combinación para la vista:

OPEN DATABASE testdata
CREATE SQL VIEW cust_orders_view AS ;
   SELECT * FROM testdata!customer ;
      INNER JOIN testdata!orders ;
      ON customer.cust_id = orders.cust_id

La condición de combinación tiene varias características: el tipo de combinación, los campos que hay que combinar y el operador para comparar los campos. En este caso, en el que tenemos una combinación interna, sólo se incluyen en el resultado las filas de la tabla customer que coinciden con uno o más registros de la tabla orders.

Para cambiar el resultado de la vista de forma que satisfaga sus necesidades específicas, puede especificar:

  • Campos en la combinación
  • Operadores de comparación entre los campos
  • Una secuencia de combinaciones, si tiene dos tablas en la vista
  • El tipo de combinación.

Especificar combinaciones en campos que no sean de clave principal ni clave externa puede ser útil en casos específicos, pero no se suele hacer en la mayor parte de las vistas.

Si cambia el operador de comparación, puede controlar qué registros se comparan y se devuelven de forma similar a un filtro. Por ejemplo, si usa un campo de fecha en la combinación, puede usar el operador de comparación para incluir sólo los registros anteriores o posteriores a una fecha determinada.

Para obtener más información acerca de la secuencia de combinaciones, consulte Definir múltiples condiciones de combinación.

Si elige un tipo de combinación diferente puede expandir el resultado de su consulta para incluir los registros que cumplan la condición de combinación y los que no la cumplan. Si tiene más de dos tablas en la vista, puede cambiar el resultado si cambia el orden de combinaciones en la cláusula FROM.

Puede modificar los tipos de combinación de la vista con el Diseñador de vistas o a través del lenguaje.

Para modificar un tipo de combinación

  • Seleccione la ficha Combinación.

    –O bien–

  • Haga doble clic en la línea de combinación.

    –O bien–

  • Abra una base de datos y use el comando CREATE SQL VIEW; agregue nombres de tablas y condiciones de combinación a la cláusula FROM.

Incluir registros no coincidentes en el resultado

Si desea incluir filas no coincidentes en el resultado, puede utilizar una combinación externa. Por ejemplo, si desea obtener una lista de todos los clientes, y saber si han realizado un pedido o no. Además, para los clientes que han realizado pedidos, es posible que desee incluir los números de pedido en la vista. Cuando usa una combinación externa, los campos vacíos de las filas no coincidentes devuelven valores NULL.

También puede usar el lenguaje para crear esta vista con el código siguiente:

OPEN DATABASE testdata
CREATE SQL VIEW cust_orders_view AS ;
   SELECT * FROM testdata!customer ;
      LEFT OUTER JOIN testdata!orders ;
      ON customer.cust_id = orders.cust_id

Para controlar qué registros no coincidentes están incluidos en la vista, puede elegir los siguientes tipos de combinación.

Para Utilice
Devolver sólo registros de ambas tablas que satisfagan la condición de comparación establecida entre los dos campos de la condición de combinación. Interna
Devolver todos los registros de la tabla situada a la izquierda de la palabra clave JOIN y únicamente los registros coincidentes de la tabla situada a la derecha de la palabra clave. Combinación externa izquierda
Devolver todos los registros de la tabla situada a la derecha de la palabra clave JOIN y únicamente los registros coincidentes de la tabla situada a la izquierda de la palabra clave. Combinación externa derecha
Devolver registros coincidentes y no coincidentes de ambas tablas. Combinación externa completa

Definir múltiples condiciones de combinación

Si crea vistas o consultas con más de dos tablas, puede cambiar el resultado por el orden en que estén especificadas las condiciones de combinación. Por ejemplo, es posible que desee buscar información acerca de los pedidos, incluidos los datos del empleado que realizó la venta y del cliente que realizó el pedido. Puede crear una vista con las tablas customer, orders y employee, y especificar las condiciones de combinación interna en los campos que tienen en común: customer y orders tienen un campo Customer ID; orders y employee tienen un campo Employee ID.

Esta vista tiene la siguiente instrucción SQL subyacente:

OPEN DATABASE testdata
CREATE SQL VIEW cust_orders_emp_view AS ;
   SELECT * FROM testdata!customer ;
      INNER JOIN testdata!orders ;
      ON customer.cust_id = orders.cust_id ;
      INNER JOIN testdata!employee ;
      ON orders.emp_id = employee.emp_id

Usar combinaciones en la cláusula WHERE

Puede especificar sus condiciones de combinación en la cláusula WHERE; sin embargo, no puede especificar un tipo de combinación de la misma forma que puede hacerlo en combinaciones en la cláusula FROM. Para vistas remotas, la cláusula de combinación aparece siempre en la cláusula WHERE.

El código siguiente crea la misma vista que el ejemplo anterior, con la cláusula WHERE para especificar las condiciones de combinación para la vista:

OPEN DATABASE testdata
CREATE SQL VIEW cust_orders_emp_view AS ;
   SELECT * FROM testdata!customer, ;
      testdata!orders, testdata!employee ;
   WHERE customer.cust_id = orders.cust_id ; 
   AND orders.emp_id = employee.emp_id

Vea también

Crear una vista de múltiples tablas | Acceso a datos remotos | Crear consultas | Administrador de proyectos | Diseñador de vistas | Mostrar los datos con las vistas | CREATE SQL VIEW