Y
Y
Yuri Velmesov2018-04-05 12:03:39
MySQL
Yuri Velmesov, 2018-04-05 12:03:39

How to correctly group rows into one by condition in Mysql?

Good day everyone!
There is a product table in "prod", a test one for an example

CREATE TABLE `prod` (
  `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255) NOT NULL COLLATE 'utf8mb4_unicode_ci',
  `residue` INT(10) UNSIGNED NOT NULL DEFAULT '0',
  `reserve` INT(10) UNSIGNED NOT NULL DEFAULT '0',
  `code` INT(10) UNSIGNED NOT NULL,
  PRIMARY KEY (`id`)
)
COLLATE='utf8mb4_unicode_ci'
ENGINE=MyISAM
AUTO_INCREMENT=7;

В ней есть товары с одинаковым кодом (артикулом), мне необходимо выводить все товары, как есть без группировки, а товары у которых "residue" и "reserve" = 0, сгруппировать в одну строку.
Смысл простой, не выводить длинный список товаров с нулевым остатком и резервом, а выводить по одной записи, а у всех остальных товаров, где есть либо остаток либо резерв либо и то и другое выводить как есть без группировки.
Вот пример моей таблицы, это для наглядности, на реале эта таблица с десятками колонок.
5ac5e6a982e72625664368.jpeg
Помогите составить запрос, я не особо силен в сложных и составных запросах.
Версия Mysql 5.7

Answer the question

In order to leave comments, you need to log in

1 answer(s)
L
Lazy @BojackHorseman MySQL, 2018-04-05
@yury-gubsky

group by case when residue = 0 AND reserve = 0 then -1 else id end

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question