Re: [pgbr-geral] Query cte retornando id - Postgres 9.2

2016-09-28 Por tôpico Rafael Fialho
2016-09-27 15:48 GMT-03:00 Patrick B :

> ...
> O que estou fazendo de errado?
>

Aparentemente o seu problema está no update, pois a subquery irá retornar
seu set de dados, porém o mesmo deveria estar na cláusula FROM. Verifique
[1] para maiores detalhes da sintaxe.

[1] - https://www.postgresql.org/docs/9.5/static/sql-update.html

Espero que ajude. Certifique-se também de que, antes do update, tudo está
funcionando de acordo.

[]'s
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

[pgbr-geral] Query cte retornando id - Postgres 9.2

2016-09-27 Por tôpico Patrick B
Oi pessoal,

WITH rows AS (
SELECT
t1.id,
t1.clientid,
t1.name_first,
t1.name_last
row_number() OVER (ORDER BY t1.id) AS rn
FROM
public.not_monthly t1
),

ins_table_1 AS (
INSERT INTO public.table_1 (clientid,name_first)
SELECT
clientid,
name_first
FROM rows
RETURNING id
),
ins_table_2 AS (
INSERT INTO public.table_2 (name_last,clientid)
SELECT
name_last,
clientid
FROM rows
RETURNING id
)

r AS (
select c_id, ROW_NUMBER() OVER () AS rn
FROM ins_table_1
),

t AS (
select id, ROW_NUMBER() OVER () AS rn
FROM rows
)
-- SELECT r.c_id FROM r JOIN t USING (rn)

UPDATE table_2 SET c_id =
(
SELECT r.c_id FROM r JOIN t USING (rn)
)
WHERE clientid = 124312
RETURNING *;


Com a query a cima eu recebo o erro: ERROR: more than one row returned by a
subquery used as an expression

Mas, o select retorna o c_Id como esperado: SELECT r.c_id FROM r JOIN t
USING (rn)

O que estou fazendo de errado?


public.not_monthly = Tabela que contém dados para importar (importado de um
CSV)
public.table_1 = Tabela para importar clientid e name_first
public.table_2 = Tabela para importar clientid, name_last e c_id (ID da
table_1 - Este id deve respeitar a ordem..)

clientid é igual para todas as rows, ou seja, não posso me basear nela
(WHERE clientid =  )

Obrigado!
Patrick
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral