Consulta compleja y problema con only_full_group
Publicado por Nkm (2 intervenciones) el 26/05/2019 23:21:02
Buenas.
Me estoy volviendo literalmente loco para conseguir sacar los resultados de esta consulta, ya que cada vez que parece que lo consigo me acaba saltando el "incompatible with sql_mode=only_full_group_by". Si alguien me puede echar una manita o al menos guiarme un poco, lo agradecería. Adjunto el .sql si alguien quiere probarlo.
Tengo esta tabla:
CREATE TABLE `precios` (
`id` mediumint(8) UNSIGNED NOT NULL,
`ean` bigint(13) UNSIGNED ZEROFILL NOT NULL,
`id_proveedor` tinyint(3) UNSIGNED NOT NULL,
`cantidad` smallint(5) UNSIGNED NOT NULL,
`precio` decimal(9,2) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Y estos registros:
INSERT INTO `precios` (`id`, `ean`, `id_proveedor`, `cantidad`, `precio`) VALUES
(1, 1111111111111, 102, 1, '7.82'),
(2, 1111111111111, 102, 3, '7.56'),
(3, 1111111111111, 102, 12, '7.56'),
(4, 1111111111111, 102, 24, '7.56'),
(5, 1111111111111, 102, 36, '7.56'),
(6, 1111111111111, 103, 1, '8.39'),
(7, 1111111111111, 103, 3, '8.24'),
(8, 1111111111111, 103, 12, '8.12'),
(9, 1111111111111, 103, 24, '8.12'),
(10, 1111111111111, 103, 36, '8.12'),
(11, 2222222222222, 102, 1, '6.86'),
(12, 3333333333333, 102, 3, '6.60'),
(13, 4444444444444, 102, 12, '6.45'),
(14, 5555555555555, 102, 24, '6.05'),
(15, 6666666666666, 102, 36, '5.80');
Lo que necesito es:
El precio mínimo por proveedor, y el mínimo de cantidad, para aquellos productos con al menos dos proveedores
Ejemplo:
- El producto 1111111111111 que está en las 10 primeras filas tiene dos proveedores (102 y 103).
- Por lo tanto, necesito que me devuelva el EAN y, para cada uno de estos dos proveedores, también el precio mínimo y a qué cantidad corresponde
- Básicamente, tiene que devolver las filas 2 y 8 (que contienen para cada EAN el precio mínimo a menor cantidad)
-- A partir de la fila 11 no tiene que devolver nada porque no hay ningún EAN con al menos dos proveedores
Me estoy volviendo literalmente loco para conseguir sacar los resultados de esta consulta, ya que cada vez que parece que lo consigo me acaba saltando el "incompatible with sql_mode=only_full_group_by". Si alguien me puede echar una manita o al menos guiarme un poco, lo agradecería. Adjunto el .sql si alguien quiere probarlo.
Tengo esta tabla:
CREATE TABLE `precios` (
`id` mediumint(8) UNSIGNED NOT NULL,
`ean` bigint(13) UNSIGNED ZEROFILL NOT NULL,
`id_proveedor` tinyint(3) UNSIGNED NOT NULL,
`cantidad` smallint(5) UNSIGNED NOT NULL,
`precio` decimal(9,2) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Y estos registros:
INSERT INTO `precios` (`id`, `ean`, `id_proveedor`, `cantidad`, `precio`) VALUES
(1, 1111111111111, 102, 1, '7.82'),
(2, 1111111111111, 102, 3, '7.56'),
(3, 1111111111111, 102, 12, '7.56'),
(4, 1111111111111, 102, 24, '7.56'),
(5, 1111111111111, 102, 36, '7.56'),
(6, 1111111111111, 103, 1, '8.39'),
(7, 1111111111111, 103, 3, '8.24'),
(8, 1111111111111, 103, 12, '8.12'),
(9, 1111111111111, 103, 24, '8.12'),
(10, 1111111111111, 103, 36, '8.12'),
(11, 2222222222222, 102, 1, '6.86'),
(12, 3333333333333, 102, 3, '6.60'),
(13, 4444444444444, 102, 12, '6.45'),
(14, 5555555555555, 102, 24, '6.05'),
(15, 6666666666666, 102, 36, '5.80');
Lo que necesito es:
El precio mínimo por proveedor, y el mínimo de cantidad, para aquellos productos con al menos dos proveedores
Ejemplo:
- El producto 1111111111111 que está en las 10 primeras filas tiene dos proveedores (102 y 103).
- Por lo tanto, necesito que me devuelva el EAN y, para cada uno de estos dos proveedores, también el precio mínimo y a qué cantidad corresponde
- Básicamente, tiene que devolver las filas 2 y 8 (que contienen para cada EAN el precio mínimo a menor cantidad)
-- A partir de la fila 11 no tiene que devolver nada porque no hay ningún EAN con al menos dos proveedores
- demoPrecios.sql.zip(1,3 KB)
Valora esta pregunta


0