Nubcoder32
Добрый день уважаемые форумчане. Прошу помощи в составлении подзапроса mySql
Код (Text):
(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):
=> ‘tag 1, tag2’ …Нужно что бы возвращал
Код (Text):
=> [ [0] => ‘tag 1’, [1] => ‘tag 2’, …. ]
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 теги хранятся в вопросах в текстовом поле. Поэтому при выводе поста нет необходимости делать джойн и группировку. Такой механизм НЕ заменяет отношение многие ко многим, а только оптимизирует самые частые запросы.