Re: Group_Concat columna que devuelve varios valores
Adjunto tablas y datos de ejemplo que producen dicho resultado.
CREATE TABLE `articulo` (
`CodEmpresa` INTEGER(11) NOT NULL,
`Id` INTEGER(11) NOT NULL COMMENT 'Id interno',
`Nombre` VARCHAR(50) COLLATE utf8_general_ci NOT NULL COMMENT 'Nombre completo del producto (Nombre largo)',
`NombreCorto` VARCHAR(20) COLLATE utf8_general_ci DEFAULT NULL COMMENT 'nombre corto para tickets u otros usos',
`ControlaStock` SMALLINT(6) NOT NULL,
`FechaCorteStock` DATETIME NOT NULL,
`Stock` DECIMAL(15,5) DEFAULT NULL,
`VentaAlPeso` SMALLINT(6) NOT NULL,
`CodTipoIva` INTEGER(11) NOT NULL,
`Obs` VARCHAR(4096) COLLATE utf8_general_ci DEFAULT NULL,
`Estado` SMALLINT(6) NOT NULL COMMENT '1-Activo 2-inactivo',
`FechaCargaRegistro` DATETIME NOT NULL,
`CodUsuarioCargaRegistro` INTEGER(11) NOT NULL,
`FechaUltModRegistro` DATETIME NOT NULL,
`CodUsuarioUltModRegistro` INTEGER(11) NOT NULL,
PRIMARY KEY USING BTREE (`CodEmpresa`, `Id`),
KEY `iNombre` USING BTREE (`CodEmpresa`, `Nombre`),
KEY `TipoIva_Articulo` USING BTREE (`CodEmpresa`, `CodTipoIva`),
CONSTRAINT `TipoIva_Articulo` FOREIGN KEY (`CodEmpresa`, `CodTipoIva`) REFERENCES `tipoiva` (`CodEmpresa`, `Id`)
) ENGINE=InnoDB
ROW_FORMAT=DYNAMIC CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci'
;
/* Data for the 'articulo' table (Records 1 - 2) */
INSERT INTO articulo (CodEmpresa, Id, Nombre, NombreCorto, ControlaStock, FechaCorteStock, Stock, VentaAlPeso, CodTipoIva, Obs, Estado, FechaCargaRegistro, CodUsuarioCargaRegistro, FechaUltModRegistro, CodUsuarioUltModRegistro) VALUES
(100, 2835, 'Amanda Yerba Campo 500 Gr.', 'Amanda Yer', 1, '2000-12-31', 0, 2, 5, 'Articulo generado por importación directa 7792710000274', 1, '2020-05-08 17:02:22', 1, '2020-05-08 18:10:53', 1),
(100, 8676, 'CHEVALIER YERBA MATE EN SAQ X 20U', 'CHEVALIER ', 1, '2000-12-31', 0, 2, 5, 'Articulo generado por importación directa 7791775000694', 1, '2020-05-08 17:03:27', 1, '2020-05-08 17:03:27', 1);
CREATE TABLE `articulolistaprecio` (
`CodEmpresa` INTEGER(11) NOT NULL,
`CodArticulo` INTEGER(11) NOT NULL,
`CodListaPrecio` INTEGER(11) NOT NULL COMMENT 'Id interno',
`Precio` DECIMAL(15,5) NOT NULL,
`Origen` CHAR(20) COLLATE utf8_general_ci DEFAULT NULL COMMENT 'origen de la generación y/o actualizacion de precio.',
`PorcentajeGanancia` DECIMAL(6,3) DEFAULT NULL COMMENT 'el porcentaje aplicado al precio origen para obtener el nuevo precio',
`VigenciaDesde` DATETIME NOT NULL COMMENT 'fecha desde vigencia lista de precio',
`VigenciaHasta` DATETIME NOT NULL COMMENT 'vigencia hasta de la lista de precio',
`Obs` VARCHAR(4096) COLLATE utf8_general_ci DEFAULT NULL,
`Estado` SMALLINT(6) NOT NULL COMMENT '1-Activo 2-inactivo',
`FechaCargaRegistro` DATETIME NOT NULL,
`CodUsuarioCargaRegistro` INTEGER(11) NOT NULL,
`FechaUltModRegistro` DATETIME NOT NULL,
`CodUsuarioUltModRegistro` INTEGER(11) NOT NULL,
PRIMARY KEY USING BTREE (`CodEmpresa`, `CodArticulo`, `CodListaPrecio`),
KEY `ListaPrecio_ArticuloListaPrecio` USING BTREE (`CodEmpresa`, `CodListaPrecio`),
CONSTRAINT `Articulo_ArticuloListaPrecio` FOREIGN KEY (`CodEmpresa`, `CodArticulo`) REFERENCES `articulo` (`CodEmpresa`, `Id`),
CONSTRAINT `ListaPrecio_ArticuloListaPrecio` FOREIGN KEY (`CodEmpresa`, `CodListaPrecio`) REFERENCES `listaprecio` (`CodEmpresa`, `Id`)
) ENGINE=InnoDB
ROW_FORMAT=DYNAMIC CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci'
;
/* Data for the 'articulolistaprecio' table (Records 1 - 2) */
INSERT INTO articulolistaprecio (CodEmpresa, CodArticulo, CodListaPrecio, Precio, Origen, PorcentajeGanancia, VigenciaDesde, VigenciaHasta, Obs, Estado, FechaCargaRegistro, CodUsuarioCargaRegistro, FechaUltModRegistro, CodUsuarioUltModRegistro) VALUES
(100, 2835, 1, 256, '', 0, '2000-01-01 00:00:01', '2100-12-31 23:59:59', 'Precio Automático', 1, '2020-05-08 17:02:22', 1, '2020-05-08 18:10:53', 1),
(100, 8676, 1, 0, '', 0, '2000-01-01 00:00:01', '2100-12-31 23:59:59', 'Precio Automático', 1, '2020-05-08 17:03:27', 1, '2020-05-08 17:03:27', 1);
CREATE TABLE `articulotipocodificacionarticulo` (
`CodEmpresa` INTEGER(11) NOT NULL,
`CodArticulo` INTEGER(11) NOT NULL,
`CodTipoCodificacionArticulo` INTEGER(11) NOT NULL,
`Valor` VARCHAR(8192) COLLATE utf8_general_ci DEFAULT NULL,
`Obs` VARCHAR(4096) COLLATE utf8_general_ci DEFAULT NULL,
`Estado` SMALLINT(6) NOT NULL COMMENT '1-Activo 2-inactivo',
`FechaCargaRegistro` DATETIME NOT NULL,
`CodUsuarioCargaRegistro` INTEGER(11) NOT NULL,
`FechaUltModRegistro` DATETIME NOT NULL,
`CodUsuarioUltModRegistro` INTEGER(11) NOT NULL,
PRIMARY KEY USING BTREE (`CodEmpresa`, `CodArticulo`, `CodTipoCodificacionArticulo`),
UNIQUE KEY `iValor` USING BTREE (`CodEmpresa`, `CodTipoCodificacionArticulo`, `Valor`(40)),
CONSTRAINT `Articulo_ArticuloTipoCodificacionArticulo` FOREIGN KEY (`CodEmpresa`, `CodArticulo`) REFERENCES `articulo` (`CodEmpresa`, `Id`),
CONSTRAINT `TipoCodificacionarticulo_ArticuloTipoCodificacionA` FOREIGN KEY (`CodEmpresa`, `CodTipoCodificacionArticulo`) REFERENCES `tipocodificacionarticulo` (`CodEmpresa`, `Id`)
) ENGINE=InnoDB
ROW_FORMAT=DYNAMIC CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci'
;
/* Data for the 'articulotipocodificacionarticulo' table (Records 1 - 4) */
INSERT INTO articulotipocodificacionarticulo (CodEmpresa, CodArticulo, CodTipoCodificacionArticulo, Valor, Obs, Estado, FechaCargaRegistro, CodUsuarioCargaRegistro, FechaUltModRegistro, CodUsuarioUltModRegistro) VALUES
(100, 2835, 1, '7792710000274', 'codigo barra articulo ', 1, '2020-05-08 17:02:22', 1, '2020-05-08 17:02:22', 1),
(100, 2835, 3, '2835', 'codigo barra articulo ', 1, '2020-05-08 17:02:22', 1, '2020-05-08 17:02:22', 1),
(100, 8676, 1, '7791775000694', 'codigo barra articulo ', 1, '2020-05-08 17:03:27', 1, '2020-05-08 17:03:27', 1),
(100, 8676, 3, '8676', 'codigo barra articulo ', 1, '2020-05-08 17:03:27', 1, '2020-05-08 17:03:27', 1);
CREATE TABLE `tipocodificacionarticulo` (
`CodEmpresa` INTEGER(11) NOT NULL,
`Id` INTEGER(11) NOT NULL,
`NroOrden` INTEGER(11) NOT NULL,
`Nombre` CHAR(30) COLLATE utf8_general_ci NOT NULL,
`Longitud` INTEGER(11) NOT NULL,
`Obs` VARCHAR(4096) COLLATE utf8_general_ci DEFAULT NULL,
`Estado` SMALLINT(6) NOT NULL COMMENT '1-Activo 2-inactivo',
`FechaCargaRegistro` DATETIME NOT NULL,
`CodUsuarioCargaRegistro` INTEGER(11) NOT NULL,
`FechaUltModRegistro` DATETIME NOT NULL,
`CodUsuarioUltModRegistro` INTEGER(11) NOT NULL,
PRIMARY KEY USING BTREE (`CodEmpresa`, `Id`)
) ENGINE=InnoDB
ROW_FORMAT=DYNAMIC CHARACTER SET 'latin1' COLLATE 'latin1_swedish_ci';
/* Data for the 'tipocodificacionarticulo' table (Records 1 - 3) */
INSERT INTO tipocodificacionarticulo (CodEmpresa, Id, NroOrden, Nombre, Longitud, Obs, Estado, FechaCargaRegistro, CodUsuarioCargaRegistro, FechaUltModRegistro, CodUsuarioUltModRegistro) VALUES
(100, 1, 1, 'Código de Barra', 13, 'código de barra 13 caracteres', 1, '2020-05-08 16:53:56', 1, '2020-05-08 16:53:56', 1),
(100, 2, 2, 'Código de Fábrica', 15, 'código de fábrica', 1, '2020-05-08 16:53:56', 1, '2020-05-08 16:53:56', 1),
(100, 3, 3, 'Código Interno', 15, 'Código Interno', 1, '2020-05-08 16:53:56', 1, '2020-05-08 16:53:56', 1);
SELECT articulo.CodEmpresa,articulo.id,articulo.Nombre,
GROUP_CONCAT(if(articulolistaprecio.CodListaPrecio=1, articulolistaprecio.precio, null)) AS `Precio1`,
GROUP_CONCAT( if(tipocodificacionarticulo.id=1, valor, null) ) AS Codigo1,
GROUP_CONCAT( if(tipocodificacionarticulo.id=2, valor, null) ) AS Codigo2,
GROUP_CONCAT( if(tipocodificacionarticulo.id=3, valor, null) ) AS Codigo3
FROM articulo
LEFT JOIN `articulolistaprecio` ON (`articulo`.`CodEmpresa` = `articulolistaprecio`.`CodEmpresa`)
AND (`articulo`.`Id` = `articulolistaprecio`.`CodArticulo`)
LEFT JOIN `articulotipocodificacionarticulo` ON (`articulo`.`Id` = `articulotipocodificacionarticulo`.`CodArticulo`)
LEFT JOIN tipocodificacionarticulo ON articulotipocodificacionarticulo.codtipocodificacionarticulo=tipocodificacionarticulo.id
WHERE articulo.codempresa=100 AND articulo.estado=1 AND
articulotipocodificacionarticulo.estado=1 AND (articulo.nombre LIKE '%YERBA%' OR articulotipocodificacionarticulo.valor LIKE '%YERBA%')
GROUP BY articulo.id, articulo.nombre
ORDER BY articulo.nombre
LIMIT 50
y fijate la columna PRECIO1