Hola a todos,
tengo problemas con un Left join, no sé si no entiendo el concepto o
qué estoy haciendo mal. Primero, las tablas:
CREATE TABLE [dbo].[MCS_PriceGroups](
[PGR_ID] [int] IDENTITY(1,1) NOT NULL,
[PGR_CODE] [int] NOT NULL,
[PGR_DESCRIPTION] [varchar](30) NOT NULL,
CONSTRAINT [PK_PriceGroups] PRIMARY KEY CLUSTERED
CREATE TABLE [dbo].[MCS_Prices](
[PRI_ID] [int] IDENTITY(1,1) NOT NULL,
[PRI_PRD_ID] [int] NOT NULL,
[PRI_PGR_ID] [int] NOT NULL,
[PRI_SIZE1] [decimal](12, 2) NULL,
[PRI_SIZE2] [decimal](12, 2) NULL,
[PRI_SIZE3] [decimal](12, 2) NULL,
[PRI_SIZE4] [decimal](12, 2) NULL,
[PRI_SIZE5] [decimal](12, 2) NULL,
[PRI_SIZE6] [decimal](12, 2) NULL,
[PRI_SIZE7] [decimal](12, 2) NULL,
[PRI_SIZE8] [decimal](12, 2) NULL,
[PRI_SIZE9] [decimal](12, 2) NULL,
CONSTRAINT [PK__MCS_Prices] PRIMARY KEY CLUSTERED
Un simple query de la primer tabla arroja:
6 1 Hjemmeboende
7 2 Sykehjem
8 3 Ikke komm inst
9 4 Andre komm inst
10 5 Catering
11 6 Another group
(los primeros están en danés).
En la tabla MCS_Prices tengo precios para solo los primeros 5 grupos y
lo que quiero es listar los 6 grupos, aún cuando no haya definido
ningún precio para alguno de ellos.
Pensé que un LEFT OUTER JOIN estaba bien, entonces hice:
SELECT PRI_PRD_ID, PGR_ID, PGR_DESCRIPTION,
PRI_SIZE1, PRI_SIZE2, PRI_SIZE3, PRI_SIZE4, PRI_SIZE5,
PRI_SIZE6, PRI_SIZE7, PRI_SIZE8, PRI_SIZE9
FROM MCS_PriceGroups
LEFT JOIN MCS_Prices ON PRI_PGR_ID = PGR_ID
WHERE PRI_PRD_ID = 3143 OR PRI_PRD_ID IS NULL
Pero siempre obtengo 5 filas.
En el query hay una condición extra, PRI_PRD_ID = 3143, que también
necesito.
Probé con INNER, FULL, RIGHT (dando vueltas las tablas), pero no hay
caso, así que cualquier ayuda es bienvenida.
Muchas gracias y perdón por lo largo del post.
Mauricio
Copenhague, Dinamarca
Leer las respuestas