MYSQL group concat, выбирающий несколько строк

0

Запрос:

SELECT 'category'.*, 
       Group_concat(DISTINCT 'sub_category'.'english_name' ORDER BY 
       'sub_category'.'order_number' 
       ASC) AS 'sub_category', 
       Group_concat(DISTINCT 'sub_category'.'id' ORDER BY 
       'sub_category'.'order_number' 
       ASC) AS 'sub_category_id', 
       Group_concat('sub_category'.'status' ORDER BY 
       'sub_category'.'order_number' ASC) 
            AS 'sub_category_status' 
FROM   'category' 
       LEFT JOIN 'item_category' 
              ON 'item_category'.'category' = 'category'.'id' 
       LEFT JOIN 'sub_category' 
              ON 'sub_category'.'category' = 'category'.'id' 
GROUP  BY 'category'.'id' 
ORDER  BY 'category'.'order_number' ASC 

Проблемная линия:

Group_concat (sub_category. status ORDER BY sub_category. order_number ASC)

Результат:

(
        [ID] => 22
        [Create_date] => 2017-11-20
        [Created_by] => 0
        [English_name] => Pens & refills
        [Gujarati_name] => પેન અનેર રીફીલ
        [Header] => False
        [Sidebar] => False
        [Order_number] => 2
        [Status] => Close
        [sub_category] => Botteled Ink,Fountain Pens,gel ink rollball pens
        [sub_category_id] => 54,55,56
        [sub_category_status] => Open,Open,Open,Open,Open,Open,Open,Open,Open,Open,Open,Open,Open,Open,Open,Open,Open,Open
)

Как вы можете видеть, я использовал DISTINCT, где я могу использовать. Статус открыт или закрыт, поэтому DISTINCT не поможет в этом столбце. Может кто-нибудь скажет мне, как я могу решить эту проблему?

  • 0
    Зачем объединяться с таблицей item_category ? Вы не используете его нигде. Чего ты пытаешься достичь?
  • 0
    Конечно, DISTINCT даже не понадобится, если вы не item_category все свои подкатегории, присоединившись к item_category .
Показать ещё 1 комментарий
Теги:

1 ответ

0

Вы пропустили DISTINCT Для sub_category_status Вот почему вы получаете дублирующее значение

Group_concat('sub_category'.'status' ORDER BY 
       'sub_category'.'order_number' ASC) 
            AS 'sub_category_status' 

ADD DISTINCT для вышеупомянутого столбца также

Group_concat( DISTINCT 'sub_category'.'status' ORDER BY 
       'sub_category'.'order_number' ASC) 
            AS 'sub_category_status' 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню