Задать вопрос
@NDll

Как вывести уникальный столбец в mysql?

Подскажите, где накосячил? Выводит все o.id (повторы), нужно чтобы o.id был уникальным.

Если я из select убираю po.id as pid, то все выводит нормально

select distinct o.id, 
       po.id as pid, 
       po.option_id, 
       po.required, 
       od.name, 
       po.value, 
       o.type 
  from options as o 
       left join product_options as po on o.id = po.option_id 
       left join option_descriptions as od on od.option_id = o.id 
 where po.product_id in (1, 5, 2)
   and od.language_id = 1
  • Вопрос задан
  • 60 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Логично. Поскольку одна и та же опция может быть и у продукта 1, и у продукта 5, и у продукта 2, то, соответственно, при JOIN'е может появиться до трёх строк с одним id опции.
Ответ написан
Комментировать
@NDll Автор вопроса
спасибо за помощь, я решил проблему иначе

я решил вывести все значения одним запросом, а потом в цикле перебрать и сгруппировать

select
           `od`.`name`, `ovd`.`name`, `ovd`.`option_value_id`, `pov`.`option_id`, `ov`.`image`
    from `products` as `p`
        left join `product_option_values` as `pov` on `p`.`id` = `pov`.`product_id`
        left join `option_descriptions` as `od` on `pov`.`option_id` = `od`.`option_id`
        left join `option_value_descriptions` as `ovd` on `pov`.`option_value_id` = `ovd`.`option_value_id`
        left join `options` as `o` on `pov`.`option_id` = `o`.`id`
        left join `option_values` as `ov` on `pov`.`option_value_id` = `ov`.`option_id`
    where
          `p`.`id` in (1, 5, 2)
      and
          `ovd`.`language_id` = 1
      and
          `od`.`language_id` = 1
    group by
             `od`.`name`,
             `ovd`.`name`,
             `pov`.`option_value_id`,
             `pov`.`option_id`,
             `ov`.`image`
    order by
             `od`.`name` asc,
             `ovd`.`name` asc
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы