Mysql запрос другой группы по - PullRequest
0 голосов
/ 22 апреля 2010

Здравствуйте, у меня есть таблица продуктов, которая содержит обычные продукты и настраиваемый продукт

Он имеет базовую структуру:

  • id
  • имя
  • цена
  • настраивается («да», «нет»)
  • id_configuration

Обычные продукты имеют настраиваемые значения no и 0 в качестве конфигурации id, а настраиваемые продукты имеют значение yes и имеют то же значение id_configuration.

Текущий запрос:

SELECT `products`.* 
FROM `products`, `categories`, `product_categories` 
WHERE `categories`.`id` = 23 AND 
      `products`.`id` = `product_categories`.`id_product` AND 
      `categories`.`id` = `product_categories`.`id_category` AND 
      `products`.`active` = 'yes' 
ORDER BY `pos_new` ASC, `created` DESC LIMIT 0,20

Мне было интересно, есть ли способ группировки по id_configuration, но только для настраиваемых продуктов. Причина в том, что я хочу, чтобы в поиске показывался только один из продуктов конфигурации. Я думал, что смогу сделать объединение, но мне было интересно, есть ли способ создать какую-то особую группу. Например, для настраиваемого yes поле должно быть id_configuration, в противном случае это должно быть поле id

Большое спасибо за любые предложения

1 Ответ

1 голос
/ 22 апреля 2010

Вы можете использовать оператор CASE в предложении GROUP BY и группировать по id_configuration, если настраиваемое значение равно 'yes', или по id, который уникален (и, следовательно, эквивалентен отсутствию группировки), если нет.

SELECT * FROM `products` 
GROUP BY CASE `configurable` WHEN 'yes' THEN `id_configuration` ELSE `id` END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...