172 похожих чатов

Люди добрые, а как можно получить только один вложенный массив? Например,

{1-electrical-components} или {1-electrical-components,2-motor-control-and-protection,3-magnetic-contactors}, но не {{}}.


SELECT p.product_id,
ARRAY_AGG(cv.slugs) FILTER (WHERE cv.slugs IS NOT NULL) AS category_slugs
FROM products AS p
LEFT JOIN shop_settings AS ss
ON ss.product_id = p.product_id
AND ss.deleted = FALSE
LEFT JOIN brands AS b
ON b.brand_id = p.brand_id
LEFT JOIN categories_view AS cv
ON cv.category_id = p.category_id
GROUP BY p.product_id;


product_id | category_slugs
--------------------------------------------- +-----------------------------------------------------------------------------------------------------------------------------------------------------------------
cc415d6c-02b4-4f1c-b0eb-f50bd436d516 | {{1-electrical-components,2-motor-control-and-protection}}
58bd6c91-8ff5-4b4e-a822-b5bed849986b | {{1-electrical-components}}
0f69a750-c902-430a-ac11-11f9964d353e | {{1-electrical-components,2-motor-control-and-protection,3-magnetic-contactors},{1-electrical-components,2-motor-control-and-protection,3-magnetic-contactors}}
nnn |
1 |

3 ответов

19 просмотров

а что у вас в cv.slugs лежит, уже массив?

Maxim- Автор вопроса
Виктор Егоров
а что у вас в cv.slugs лежит, уже массив?

Да, {1-electrical-components,2-motor-control-and-protection,3-magnetic-contactors}

Maxim- Автор вопроса

Агрегат самодельный тут вписывается неплохо: ``` CREATE AGGREGATE array_accum (anyarray) ( sfunc = array_cat, stype = anyarray, initcond = '{}' ); SELECT ARRAY_ACCUM(DISTINCT cv.slugs) product_id | array_accum --------------------------------------+-------------------------------------------------------------------------------- 0f69a750-c902-430a-ac11-11f9964d353e | {1-electrical-components,2-motor-control-and-protection,3-magnetic-contactors} 1 | {} 58bd6c91-8ff5-4b4e-a822-b5bed849986b | {1-electrical-components} cc415d6c-02b4-4f1c-b0eb-f50bd436d516 | {1-electrical-components,2-motor-control-and-protection} nnn | {} ``` https://www.postgresql.org/docs/9.2/xaggr.html https://stackoverflow.com/questions/43472482/postgres-array-agg-throws-cannot-accumulate-empty-arrays-for-empty-arrays

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта