MySQL GROUP_CONCAT
Odesláno v September 16, 2016 | Kategorie MySQL, PHP, Programování | Leave a Comment
Skvělou MySQL funkcí, o které mnoho lidí neví, je GROUP_CONCAT. Ve skutečnosti jsem ji neznal já a přišla mi velmi vhod.
Jednoduchý příklad použití: Máme v tabulce statisíce, možná milióny řádků typu
Id | ProductID | Tag
Máme několik tagů u každého ProductId a chceme vypsat všechny Tagy pro vybrané ProductId.
Tohle u jednoho produktu snadno vyřešíme SELECTem. Pokud bychom ale chtěli vypsat v jedné tabulce všechny Produkty s jejich tagy, asi bychom to museli složit pomocí skriptu, možná nějak přes JOINT.
Ale právě k tomu je zde GROUP_CONCAT()
select `ProductId`,
GROUP_CONCAT(DISTINCT `Tag` SEPARATOR ',') as tags
from `keywords`
group by ProductId
Výsledek pak vypadá nějak takto:
ProductID Tags
1 reality,průmyslové,pronájem,skladování,sklady
2 software,blog,hardware,it,novinky,názory
3 kilimandžáro,afrika
4 hudba
Poznámka, nicméně důležitá. MySQL má nastavenu max. délku výstupního řetězce na 1024 znaků, určutě je vhodná vyšší hodnota.
mysql_query("SET group_concat_max_len = 4096");
Komentáře
Váš komentář: