У меня есть (что я думаю) довольно сложный запрос.Запрос получает запись, которую я хочу, а затем все данные, указанные в первом ответе.Это работает, если моим условным подзапросом является строка, но не если это поле (с точно таким же значением).
// Query with string as conditional in lowest sub-query (4th line from the bottom)
SELECT
e1.entity as entity
,ARRAY_CAT(
ARRAY_COMPACT(
ARRAY_CONSTRUCT(
any_value(e2.entity),
any_value(u1.user)
)
)
,ARRAY_AGG(e3.entity)
) as includes
FROM ENTITIES e1
LEFT JOIN ENTITIES e2 ON e1.entity:owner:workspace = e2.entity:id
LEFT JOIN USERS u1 ON e1.entity:owner:user = u1.user:id
LEFT JOIN ENTITIES e3 ON e3.entity:id IN (
SELECT ee2.value FROM
table(FLATTEN( input=>
SELECT SPLIT(LISTAGG( CASE WHEN IS_ARRAY(ee1.value:id) THEN ARRAY_TO_STRING(ee1.value:id, ',') ELSE ee1.value:id END, ','), ',')
FROM table(FLATTEN( input => ( SELECT e4.entity:relationships:entities FROM ENTITIES e4 WHERE e4.entity:id = 'bd265f29-ca32-449a-b765-bb488e4d6b3c' ) )) ee1
)) ee2
)
GROUP BY e1.entity
Выше приведено:
столбец "entity":https://jsonblob.com/6d98b587-8989-11e9-b738-a9487a0dac0b
«включает» столбец: https://jsonblob.com/068a8672-8988-11e9-b738-77f0e471310b
Однако, если я изменю строку uuid (bd265f29-ca32-449a-b765-bb488e4d6b3c
) на e1.entity:id
(ниже), то получуошибка SQL compilation error: Unsupported subquery type cannot be evaluated
.
SELECT
e1.entity as entity
,ARRAY_CAT(
ARRAY_COMPACT(
ARRAY_CONSTRUCT(
any_value(e2.entity),
any_value(u1.user)
)
)
,ARRAY_AGG(e3.entity)
) as includes
FROM ENTITIES e1
LEFT JOIN ENTITIES e2 ON e1.entity:owner:workspace = e2.entity:id
LEFT JOIN USERS u1 ON e1.entity:owner:user = u1.user:id
LEFT JOIN ENTITIES e3 ON e3.entity:id IN (
SELECT ee2.value FROM
table(FLATTEN( input=>
SELECT SPLIT(LISTAGG( CASE WHEN IS_ARRAY(ee1.value:id) THEN ARRAY_TO_STRING(ee1.value:id, ',') ELSE ee1.value:id END, ','), ',')
FROM table(FLATTEN( input => ( SELECT e4.entity:relationships:entities FROM ENTITIES e4 WHERE e4.entity:id = e1.entity:id ) )) ee1
)) ee2
)
GROUP BY e1.entity
Я понятия не имею, почему коммутатор вызывает ошибку.Почему мой подзапрос работает со строкой, а не со ссылкой на поле?