21/2/18

Variables en SqlServer

En ocasiones es cómodo almacenar en una variable un valor si se van a hacer varias consultas. Siempre se puede repetir la consulta original pero a veces no tiene sentido.

Para hacer esto en SqlServer...

declare @idDeTrabajo int;
select @idDeTrabajo = (select id from nuestraTabla where claveAlternativa like 'ED820');--sin paréntesis falla

select * from Telefono where idTrabajo = @idDeTrabajo;
select * from DireccionPostal where idTrabajo = @idTrabajo;

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

1/2/18

Powershell. Problema al instalar paquetes npm que incluyen "@" arroba.

npm install @types/chai --save-dev

El comando powershell superior da un error "Símbolo (token) no reconocido en el texto de origen."

El problema está en la "@". En powershell el símbolo @ se usa para definir cosas que siguen como arrays, literales de más de una línea, etc. por lo que no funciona tal y como funcionaría en cmd.exe o shells de linux

Para solucionarlo en Powershell, hemos de poner entre comillas el paquete que incluya la @

npm install "@types/chai" --save-dev