pg.ddx.io pgsql-sql@postgresql.org mailing list archive
help / color / mirror / Atom feedInsert based in a select
6+ messages / 2 participants
[nested] [flat]
* Insert based in a select
@ 2007-02-25 00:06 Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
2007-02-25 01:23 ` Re: Insert based in a select Phillip Smith <phillip.smith@weatherbeeta.com.au>
0 siblings, 1 reply; 6+ messages in thread
From: Ezequias Rodrigues da Rocha @ 2007-02-25 00:06 UTC (permalink / raw)
To: pgsql-sql
Hi list,
Could someone help me with this problem
I have a table like this
Master table
id number
10 9898398398
20 9938378390
30 9873636736
and I want to make an insert into a table with this structure:
Secondary table
id(sequence), master_id
1 10
2 20
3 30
It is possible to make this insert based in all records of my master table ?
Any help would be very welcomed.
Best Regards
Ezequias
^ permalink raw reply [nested|flat] 6+ messages in thread
* Re: Insert based in a select
2007-02-25 00:06 Insert based in a select Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
@ 2007-02-25 01:23 ` Phillip Smith <phillip.smith@weatherbeeta.com.au>
0 siblings, 0 replies; 6+ messages in thread
From: Phillip Smith @ 2007-02-25 01:23 UTC (permalink / raw)
To: Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>; +Cc: pgsql-sql
INSERT INTO second_table (master_id) SELECT id FROM master_table ORDER
BY id;
Was it important to you that the id and master id in the second table
match up? ie, 1 and 10, 2 and 20, 3 and 30 - not 1 and 30, 2 and 10, 3
and 20 etc...
~p
On Sat, 2007-02-24 at 21:06 -0300, Ezequias Rodrigues da Rocha wrote:
> Hi list,
>
> Could someone help me with this problem
>
> I have a table like this
>
> Master table
>
> id number
> 10 9898398398
> 20 9938378390
> 30 9873636736
>
> and I want to make an insert into a table with this structure:
>
> Secondary table
>
> id(sequence), master_id
> 1 10
> 2 20
> 3 30
>
> It is possible to make this insert based in all records of my master table ?
>
> Any help would be very welcomed.
>
> Best Regards
> Ezequias
>
> ---------------------------(end of broadcast)---------------------------
> TIP 7: You can help support the PostgreSQL project by donating at
>
> http://www.postgresql.org/about/donate
*******************Confidentiality and Privilege Notice*******************
The material contained in this message is privileged and confidential to
the addressee. If you are not the addressee indicated in this message or
responsible for delivery of the message to such person, you may not copy
or deliver this message to anyone, and you should destroy it and kindly
notify the sender by reply email.
Information in this message that does not relate to the official business
of Weatherbeeta must be treated as neither given nor endorsed by Weatherbeeta.
Weatherbeeta, its employees, contractors or associates shall not be liable
for direct, indirect or consequential loss arising from transmission of this
message or any attachments
^ permalink raw reply [nested|flat] 6+ messages in thread
* Re: Insert based in a select
@ 2007-02-25 22:17 Phillip Smith <phillip.smith@weatherbeeta.com.au>
2007-02-25 23:57 ` Re: Insert based in a select Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
0 siblings, 1 reply; 6+ messages in thread
From: Phillip Smith @ 2007-02-25 22:17 UTC (permalink / raw)
To: 'Ezequias Rodrigues da Rocha' <ezequias.rocha@gmail.com>; +Cc: pgsql-sql
(Please reply to the list when replying)
The error is correct - you are telling PG to insert one row (the literal
values you've passed to INSERT), but the sub-query is returning multiple
rows which won't fit in a single row.
I see 2 options, but someone else I'm sure will have a more elegant way to
do it:
1) insert into base.ingresso (select id from base.cartao order by id)
2) insert into base.ingresso values (nextval(' base.ingresso_id'), 4, now(),
12.34, 12.34, 1, 1678, (select id from base.cartao where id not in (SELECT
id from base.ingresso) order by id limit 1), 2, 25, 99)
Number 1 will create one row in base.ingresso for each row in base.cartao.
You will then need to use UPDATE to adjust the values in each of those rows
to the other values you want.
Number 2 would need to be run over and over again - not a practical option I
imagine.
~p
-----Original Message-----
From: Ezequias Rodrigues da Rocha [mailto:ezequias.rocha@gmail.com]
Sent: Monday, 26 February 2007 00:43
To: phillip.smith@weatherbeeta.com.au
Subject: Re: [SQL] Insert based in a select
Phillip,
Thank you for the information but the master (id) is only a field of my
secondary table.
My sql statement is like this:
insert into base.ingresso values (nextval(' base.ingresso_id'), 4, now(),
12.34, 12.34, 1, 1678, (select id from base.cartao order by id), 2, 25, 99)
And I am getting the following error return message:
ERROR: more than one row returned by a subquery used as an expression
SQL state: 21000
Could you give me another help with this ?
Ezequias
*******************Confidentiality and Privilege Notice*******************
The material contained in this message is privileged and confidential to
the addressee. If you are not the addressee indicated in this message or
responsible for delivery of the message to such person, you may not copy
or deliver this message to anyone, and you should destroy it and kindly
notify the sender by reply email.
Information in this message that does not relate to the official business
of Weatherbeeta must be treated as neither given nor endorsed by Weatherbeeta.
Weatherbeeta, its employees, contractors or associates shall not be liable
for direct, indirect or consequential loss arising from transmission of this
message or any attachments
^ permalink raw reply [nested|flat] 6+ messages in thread
* Re: Insert based in a select
2007-02-25 22:17 Re: Insert based in a select Phillip Smith <phillip.smith@weatherbeeta.com.au>
@ 2007-02-25 23:57 ` Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
2007-02-26 00:20 ` Re: Insert based in a select Phillip Smith <phillip.smith@weatherbeeta.com.au>
0 siblings, 1 reply; 6+ messages in thread
From: Ezequias Rodrigues da Rocha @ 2007-02-25 23:57 UTC (permalink / raw)
To: Phillip Smith <phillip.smith@weatherbeeta.com.au>; +Cc: pgsql-sql
The second statement works but only 1 row was affected. It do not apply to
me.
The first statement i didn't understand. You are adding only the first field
on my base.ingresso table ?
Regards
Ezequias
2007/2/25, Phillip Smith <phillip.smith@weatherbeeta.com.au>:
>
> (Please reply to the list when replying)
>
>
>
> The error is correct – you are telling PG to insert one row (the literal
> values you've passed to INSERT), but the sub-query is returning multiple
> rows which won't fit in a single row.
>
>
>
> I see 2 options, but someone else I'm sure will have a more elegant way to
> do it:
>
> 1) insert into base.ingresso (select id from base.cartao order by id)
>
> 2) insert into base.ingresso values (nextval(' base.ingresso_id'), 4,
> now(), 12.34, 12.34, 1, 1678, (select id from base.cartao where id not in
> (SELECT id from base.ingresso) order by id limit 1), 2, 25, 99)
>
>
>
> Number 1 will create one row in base.ingresso for each row in base.cartao.
> You will then need to use UPDATE to adjust the values in each of those rows
> to the other values you want.
>
>
>
> Number 2 would need to be run over and over again – not a practical option
> I imagine…
>
>
>
> ~p
>
>
>
> -----Original Message-----
> *From:* Ezequias Rodrigues da Rocha [mailto:ezequias.rocha@gmail.com]
> *Sent:* Monday, 26 February 2007 00:43
> *To:* phillip.smith@weatherbeeta.com.au
> *Subject:* Re: [SQL] Insert based in a select
>
>
>
> Phillip,
>
> Thank you for the information but the master (id) is only a field of my
> secondary table.
>
> My sql statement is like this:
>
> *insert into base.ingresso values (nextval(' base.ingresso_id'), 4, now(),
> 12.34, 12.34, 1, 1678, (select id from base.cartao order by id), 2, 25,
> 99)*
>
> And I am getting the following error return message:
>
> *ERROR: more than one row returned by a subquery used as an expression
> SQL state: 21000
> *
> Could you give me another help with this ?
>
> Ezequias
>
> ********************Confidentiality and Privilege
> Notice********************
>
> The material contained in this message is privileged and confidential to
> the addressee. If you are not the addressee indicated in this message or
> responsible for delivery of the message to such person, you may not copy or
> deliver this message to anyone, and you should destroy it and kindly notify
> the sender by reply email.
>
> Information in this message that does not relate to the official business
> of Weatherbeeta must be treated as neither given nor endorsed by
> Weatherbeeta. Weatherbeeta, its employees, contractors or associates shall
> not be liable for direct, indirect or consequential loss arising from
> transmission of this message or any attachments
>
>
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Atenciosamente (Sincerely)
Ezequias Rodrigues da Rocha
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
A pior das democracias ainda é melhor do que a melhor das ditaduras
The worst of democracies is still better than the better of dictatorships
http://ezequiasrocha.blogspot.com/
^ permalink raw reply [nested|flat] 6+ messages in thread
* Re: Insert based in a select
2007-02-25 22:17 Re: Insert based in a select Phillip Smith <phillip.smith@weatherbeeta.com.au>
2007-02-25 23:57 ` Re: Insert based in a select Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
@ 2007-02-26 00:20 ` Phillip Smith <phillip.smith@weatherbeeta.com.au>
2007-02-26 00:43 ` Re: Insert based in a select Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
0 siblings, 1 reply; 6+ messages in thread
From: Phillip Smith @ 2007-02-26 00:20 UTC (permalink / raw)
To: 'Ezequias Rodrigues da Rocha' <ezequias.rocha@gmail.com>; +Cc: pgsql-sql
Apologies – the first statement should have included the column name to
insert to:
INSERT INTO base.ingresso (id_column) (SELECT id FROM base.cartao ORDER BY
id)
That will insert one row in ingresso for each row in cartao – only changing
the id column. All the other columns in each row will be populated with the
default values. That is why you will need to do an UPDATE afterwards.
Something like:
UPDATE base.ingresso
SET col1 = ‘value1’, sol2 = ‘value2’
WHERE id IN (SELECT id FROM base.cartao);
Hope this makes sense,
~p
-----Original Message-----
From: pgsql-sql-owner@postgresql.org [mailto:pgsql-sql-owner@postgresql.org]
On Behalf Of Ezequias Rodrigues da Rocha
Sent: Monday, 26 February 2007 10:58
To: Phillip Smith
Cc: pgsql-sql@postgresql.org
Subject: Re: [SQL] Insert based in a select
The second statement works but only 1 row was affected. It do not apply to
me.
The first statement i didn't understand. You are adding only the first field
on my base.ingresso table ?
Regards
Ezequias
2007/2/25, Phillip Smith <phillip.smith@weatherbeeta.com.au>:
(Please reply to the list when replying)
The error is correct – you are telling PG to insert one row (the literal
values you've passed to INSERT), but the sub-query is returning multiple
rows which won't fit in a single row.
I see 2 options, but someone else I'm sure will have a more elegant way to
do it:
1) insert into base.ingresso (select id from base.cartao order by id)
2) insert into base.ingresso values (nextval(' base.ingresso_id'), 4, now(),
12.34, 12.34, 1, 1678, (select id from base.cartao where id not in (SELECT
id from base.ingresso) order by id limit 1), 2, 25, 99)
Number 1 will create one row in base.ingresso for each row in base.cartao.
You will then need to use UPDATE to adjust the values in each of those rows
to the other values you want.
Number 2 would need to be run over and over again – not a practical option I
imagine…
~p
-----Original Message-----
From: Ezequias Rodrigues da Rocha [mailto:ezequias.rocha@gmail.com]
Sent: Monday, 26 February 2007 00:43
To: phillip.smith@weatherbeeta.com.au
Subject: Re: [SQL] Insert based in a select
Phillip,
Thank you for the information but the master (id) is only a field of my
secondary table.
My sql statement is like this:
insert into base.ingresso values (nextval(' base.ingresso_id'), 4, now(),
12.34, 12.34, 1, 1678, (select id from base.cartao order by id), 2, 25, 99)
And I am getting the following error return message:
ERROR: more than one row returned by a subquery used as an expression
SQL state: 21000
Could you give me another help with this ?
Ezequias
*******************Confidentiality and Privilege Notice*******************
The material contained in this message is privileged and confidential to the
addressee. If you are not the addressee indicated in this message or
responsible for delivery of the message to such person, you may not copy or
deliver this message to anyone, and you should destroy it and kindly notify
the sender by reply email.
Information in this message that does not relate to the official business of
Weatherbeeta must be treated as neither given nor endorsed by Weatherbeeta.
Weatherbeeta, its employees, contractors or associates shall not be liable
for direct, indirect or consequential loss arising from transmission of this
message or any attachments
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Atenciosamente (Sincerely)
Ezequias Rodrigues da Rocha
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
A pior das democracias ainda é melhor do que a melhor das ditaduras
The worst of democracies is still better than the better of dictatorships
http://ezequiasrocha.blogspot.com/
*******************Confidentiality and Privilege Notice*******************
The material contained in this message is privileged and confidential to
the addressee. If you are not the addressee indicated in this message or
responsible for delivery of the message to such person, you may not copy
or deliver this message to anyone, and you should destroy it and kindly
notify the sender by reply email.
Information in this message that does not relate to the official business
of Weatherbeeta must be treated as neither given nor endorsed by Weatherbeeta.
Weatherbeeta, its employees, contractors or associates shall not be liable
for direct, indirect or consequential loss arising from transmission of this
message or any attachments
^ permalink raw reply [nested|flat] 6+ messages in thread
* Re: Insert based in a select
2007-02-25 22:17 Re: Insert based in a select Phillip Smith <phillip.smith@weatherbeeta.com.au>
2007-02-25 23:57 ` Re: Insert based in a select Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
2007-02-26 00:20 ` Re: Insert based in a select Phillip Smith <phillip.smith@weatherbeeta.com.au>
@ 2007-02-26 00:43 ` Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
0 siblings, 0 replies; 6+ messages in thread
From: Ezequias Rodrigues da Rocha @ 2007-02-26 00:43 UTC (permalink / raw)
To: Phillip Smith <phillip.smith@weatherbeeta.com.au>; pgsql-sql
Im sorry but I didn't understand what you mean with the UPDATE.
Anyway, it don't apply to my point. I must do an insert in each row of my
ingresso table with his Id, some fields and the id of my cartao table.
You help is very welcomed but my solution doesn't came this time.
My best regards
Ezequias
2007/2/25, Phillip Smith <phillip.smith@weatherbeeta.com.au>:
>
> Apologies – the first statement should have included the column name to
> insert to:
>
> INSERT INTO base.ingresso (id_column) (SELECT id FROM base.cartao ORDER BY
> id)
>
>
>
> That will insert one row in ingresso for each row in cartao – only
> changing the id column. All the other columns in each row will be populated
> with the default values. That is why you will need to do an UPDATE
> afterwards. Something like:
>
> UPDATE base.ingresso
>
> SET col1 = 'value1', sol2 = 'value2'
>
> WHERE id IN (SELECT id FROM base.cartao);
>
>
>
> Hope this makes sense,
>
> ~p
>
>
>
>
>
> -----Original Message-----
> *From:* pgsql-sql-owner@postgresql.org [mailto:
> pgsql-sql-owner@postgresql.org] *On Behalf Of *Ezequias Rodrigues da Rocha
> *Sent:* Monday, 26 February 2007 10:58
> *To:* Phillip Smith
> *Cc:* pgsql-sql@postgresql.org
> *Subject:* Re: [SQL] Insert based in a select
>
>
>
> The second statement works but only 1 row was affected. It do not apply to
> me.
>
> The first statement i didn't understand. You are adding only the first
> field on my base.ingresso table ?
>
> Regards
> Ezequias
>
> 2007/2/25, Phillip Smith <phillip.smith@weatherbeeta.com.au>:
>
> (Please reply to the list when replying)
>
>
>
> The error is correct – you are telling PG to insert one row (the literal
> values you've passed to INSERT), but the sub-query is returning multiple
> rows which won't fit in a single row.
>
>
>
> I see 2 options, but someone else I'm sure will have a more elegant way to
> do it:
>
> 1) insert into base.ingresso (select id from base.cartao order by id)
>
> 2) insert into base.ingresso values (nextval(' base.ingresso_id'), 4,
> now(), 12.34, 12.34, 1, 1678, (select id from base.cartao where id not in
> (SELECT id from base.ingresso) order by id limit 1), 2, 25, 99)
>
>
>
> Number 1 will create one row in base.ingresso for each row in base.cartao.
> You will then need to use UPDATE to adjust the values in each of those rows
> to the other values you want.
>
>
>
> Number 2 would need to be run over and over again – not a practical option
> I imagine…
>
>
>
> ~p
>
>
>
> -----Original Message-----
> *From:* Ezequias Rodrigues da Rocha [mailto:ezequias.rocha@gmail.com]
> *Sent:* Monday, 26 February 2007 00:43
> *To:* phillip.smith@weatherbeeta.com.au
> *Subject:* Re: [SQL] Insert based in a select
>
>
>
> Phillip,
>
> Thank you for the information but the master (id) is only a field of my
> secondary table.
>
> My sql statement is like this:
>
> *insert into base.ingresso values (nextval(' base.ingresso_id'), 4, now(),
> 12.34, 12.34, 1, 1678, (select id from base.cartao order by id), 2, 25,
> 99)*
>
> And I am getting the following error return message:
>
> *ERROR: more than one row returned by a subquery used as an expression
> SQL state: 21000
> *
> Could you give me another help with this ?
>
> Ezequias
>
>
>
> ********************Confidentiality and Privilege
> Notice********************
>
> The material contained in this message is privileged and confidential to
> the addressee. If you are not the addressee indicated in this message or
> responsible for delivery of the message to such person, you may not copy or
> deliver this message to anyone, and you should destroy it and kindly notify
> the sender by reply email.
>
> Information in this message that does not relate to the official business
> of Weatherbeeta must be treated as neither given nor endorsed by
> Weatherbeeta. Weatherbeeta, its employees, contractors or associates shall
> not be liable for direct, indirect or consequential loss arising from
> transmission of this message or any attachments
>
>
>
>
> --
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> Atenciosamente (Sincerely)
> Ezequias Rodrigues da Rocha
> =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
> A pior das democracias ainda � melhor do que a melhor das ditaduras
> The worst of democracies is still better than the better of dictatorships
> http://ezequiasrocha.blogspot.com/
>
> ********************Confidentiality and Privilege
> Notice********************
>
> The material contained in this message is privileged and confidential to
> the addressee. If you are not the addressee indicated in this message or
> responsible for delivery of the message to such person, you may not copy or
> deliver this message to anyone, and you should destroy it and kindly notify
> the sender by reply email.
>
> Information in this message that does not relate to the official business
> of Weatherbeeta must be treated as neither given nor endorsed by
> Weatherbeeta. Weatherbeeta, its employees, contractors or associates shall
> not be liable for direct, indirect or consequential loss arising from
> transmission of this message or any attachments
>
>
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Atenciosamente (Sincerely)
Ezequias Rodrigues da Rocha
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
A pior das democracias ainda é melhor do que a melhor das ditaduras
The worst of democracies is still better than the better of dictatorships
http://ezequiasrocha.blogspot.com/
^ permalink raw reply [nested|flat] 6+ messages in thread
end of thread, other threads:[~2007-02-26 00:43 UTC | newest]
Thread overview: 6+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2007-02-25 00:06 Insert based in a select Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
2007-02-25 01:23 ` Phillip Smith <phillip.smith@weatherbeeta.com.au>
2007-02-25 22:17 Re: Insert based in a select Phillip Smith <phillip.smith@weatherbeeta.com.au>
2007-02-25 23:57 ` Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
2007-02-26 00:20 ` Phillip Smith <phillip.smith@weatherbeeta.com.au>
2007-02-26 00:43 ` Ezequias Rodrigues da Rocha <ezequias.rocha@gmail.com>
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox