Nie wiem czy dobra kategoria forum
Mam relację jeden do wielu (klucz-wartość, jeden klucz może mieć wiele wartości). Chcę we froncie wyświetlić klucze i jego możliwe wartości. Robię to tak
SELECT
`keys`.`key`, GROUP_CONCAT(`values`.text SEPARATOR ',')
FROM `keys`
JOIN `values` ON `keys`.id = `values`.key_id
GROUP BY `keys`.`key`;
Niestety jeśli w jakiejś wartości będzie przecinek, to potem nie będzie się dało tego rozbić na arraya stringów.
W Postgresie użyłbym json_agg
, żeby sobie zgrupować te stringi, i potem je tylko zdeserializować i wysłać do frontu. Chciałbym to zrobić w SQL ponieważ takich kluczy może być bardzo dużo, i nie chcę niepotrzebnie robić load'a rozwiązując to w backendzie, zamiast w bazie.
Jedyny pomysł jaki mam to użyć jakiegoś dzikiego separatora w GROUP_CONCAT (np ^
), i po prostu zakazać używania takiego znaku w values
, ale nie wydaje mi się to dobrym pomysłem.
Any ideas?