21/2/18

Subtabla separada por comas.

Si queremos facilitar la visualización desde sqlpuro de una relación de uno a muchos, en ocasiones, es conveniente mostrar los datos de esa "subtabla" en un campo. Físicamente se almacena en una tabla separada pero, para visualizar la visualización, la mostramos como un campo.
Explico el ejemplo:
  • Tenemos una relación de muchos a muchos (Productos, Categorias)
  • La pasamos a una relación de uno (Productos) a muchos (Categorías unida con ProductosCategorias)
  • Mostramos la lista de productos con un campo que se extrae de la tabla de la parte muchos.
Con SqlServer se podría hacer como muestra el ejemplo:
SELECT Productos.Nombre, 
 STUFF(
    (SELECT ', '  + Categorias.Categoria
    FROM Categorias
    INNER JOIN ProductosCategorias ON ProductosCategorias.idCategoria = Categorias.idCategoria
    WHERE ProductosCategorias.idProducto = Productos.idProducto
    FOR XML PATH('')),
    1, 2, '') As Categorias
FROM Productos

No hay comentarios: