Las funciones RELATED y RELATEDTABLE

Se ha comentado que, en presencia de contexto de filtro, el modelo de datos no se está filtrando. Sin embargo, las relaciones entre las tablas del modelo de datos siguen activas, y esto nos permite -durante la iteración de la tabla- acceder a los valores de las tablas relacionadas con la fila que se esté iterando.

Y aquí la pregunta a hacerse es: desde una fila de la tabla que estamos iterando ¿podemos acceder a una única fila de una tabla relacionada? ¿O a más de una fila?

Por ejemplo, echemos un vistazo a las tablas de Category, Subcategory y Products. Ésta es la tabla de categorías:

Category

Esta tabla contiene un identificador de categoría (clave principal de la tabla) y el nombre de la categoría.

Esta tabla es la de subcategorías:

Subcategory

Vemos que cada fila incluye un identificador de subcategoría (clave principal), el nombre de la subcategoría y el identificador de la categoría a la que pertenece (clave externa de la relación entre esta tabla y la de categorías). Es decir, una subcategoría tiene una y solo una categoría asociada. Por ejemplo, la subcategoría “Servers” (primera fila) está asociada a la categoría cuyo identificador es 1 (Hardware).

Y aquí tenemos algunas filas de la tabla de productos:

Products

Esta tabla contiene, entre otros campos, un identificador de la subcategoría a la que pertenece (campo SubCategory Id, clave externa de la relación entre esta tabla y la de subcategorías). Es decir, un producto tiene asociada una y solo una subcategoría. Por ejemplo, el producto que aparece en la primera fila (cuyo Product name es “P001-Intel-R”) tiene asociada la subcategoría cuyo identificador es 2:

Products

subcategoría que, como hemos visto en una captura de pantalla anterior, es la subcategoría “Monitors” que, a su vez, tiene asociada la categoría cuyo identificador es 1 (la categoría “Hardware”):

Subcategory