Помогите составить SQL подзапрос

Nubcoder32

Добрый день уважаемые форумчане. Прошу помощи в составлении подзапроса mySql

Код (Text):
  1.  
  2. (SELECT  GROUP_CONCAT(tags.name) FROM tag_product, tags WHERE tag_product.product_id = product.id AND tags.id = tag_product.tag_id) AS tags’;

Возвращает

Код (Text):
  1.  
  2. => ‘tag 1, tag2’ …

Нужно что бы возвращал

Код (Text):
  1.  
  2. => [
  3.      [0] => ‘tag 1’,
  4.      [1] => ‘tag 2’,
  5.      ….
  6. ]
 

Drunkenmunky

MySQL такого не может.
Если версия выше 5,7 то обратите внимание на json функции MySQL

 

ADSoft

+ помните об ограничении в длину агрегируемого поля tag_product в 1024 символа (можно настройками MySQL увеличить максимум до 4096)
если тегов будет много .. в очень неприятную ситуацию можете попасть

 

Drunkenmunky

Обрежет лишнее просто.

 

ADSoft

просто если ты рассчитываешь на один результат, а тебе “лишнее просто обрежет” – весь моск сломаешь, почему не все результаты

 

Drunkenmunky

Это да.

 

Nubcoder32

Блин это что ж теперь из цикла запросы слать, или лучше explode что бы бд не дергать?

 

Drunkenmunky

Не группируйте.
Если сразу выводите на страницу, то сортируйте силами MySQL Можно по двум и более колонкам.
Если же в массив, то посортировать можно и с PHP

 

musicman3

$exec->fetchAll(PDO :: FETCH_ASSOC)) юзайте и будет счастье. Будет именованный массив на выходе.

 

artoodetoo

Это подходящий случай для сознательной денормализации. В базе StackOverflow теги хранятся в вопросах в текстовом поле. Поэтому при выводе поста нет необходимости делать джойн и группировку. Такой механизм НЕ заменяет отношение многие ко многим, а только оптимизирует самые частые запросы.

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *