Обсуждение: Prent-Child relationships in SQL
Hi All,
I have a simple table below and I want to be able to write a SQL select query that returns the grouping_ids until I get no more children. The parent_grouping_id column is the parent to the grouping_id child column. Can somebody please advise me how I can do this in postgreSQL.
CREATE TABLE grouping
(
grouping_id int4 NOT NULL,
version int4,
parent_grouping_id int4,
topic_topic_id int4,
CONSTRAINT grouping_pkey PRIMARY KEY (grouping_id),
CONSTRAINT fk1e2e9d036852722d FOREIGN KEY (topic_topic_id)
REFERENCES topic (topic_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk1e2e9d03a1bfbfe FOREIGN KEY (topic_topic_id)
REFERENCES topic (topic_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk1e2e9d03cdaf7222 FOREIGN KEY (parent_grouping_id)
REFERENCES grouping (grouping_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITHOUT OIDS;
ALTER TABLE grouping OWNER TO napdba;
Thanks In Advance.
I have a simple table below and I want to be able to write a SQL select query that returns the grouping_ids until I get no more children. The parent_grouping_id column is the parent to the grouping_id child column. Can somebody please advise me how I can do this in postgreSQL.
CREATE TABLE grouping
(
grouping_id int4 NOT NULL,
version int4,
parent_grouping_id int4,
topic_topic_id int4,
CONSTRAINT grouping_pkey PRIMARY KEY (grouping_id),
CONSTRAINT fk1e2e9d036852722d FOREIGN KEY (topic_topic_id)
REFERENCES topic (topic_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk1e2e9d03a1bfbfe FOREIGN KEY (topic_topic_id)
REFERENCES topic (topic_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk1e2e9d03cdaf7222 FOREIGN KEY (parent_grouping_id)
REFERENCES grouping (grouping_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITHOUT OIDS;
ALTER TABLE grouping OWNER TO napdba;
Thanks In Advance.
Read the docs on "connectby" function provided by "tablefunc" contrib module.
Igor
From: pgsql-admin-owner@postgresql.org [mailto:pgsql-admin-owner@postgresql.org] On Behalf Of Gibson Chimhamhiwa
Sent: Friday, July 25, 2008 7:43 AM
To: pgsql-admin@postgresql.org
Subject: [ADMIN] Prent-Child relationships in SQL
Hi All,
I have a simple table below and I want to be able to write a SQL select query that returns the grouping_ids until I get no more children. The parent_grouping_id column is the parent to the grouping_id child column. Can somebody please advise me how I can do this in postgreSQL.
CREATE TABLE grouping
(
grouping_id int4 NOT NULL,
version int4,
parent_grouping_id int4,
topic_topic_id int4,
CONSTRAINT grouping_pkey PRIMARY KEY (grouping_id),
CONSTRAINT fk1e2e9d036852722d FOREIGN KEY (topic_topic_id)
REFERENCES topic (topic_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk1e2e9d03a1bfbfe FOREIGN KEY (topic_topic_id)
REFERENCES topic (topic_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk1e2e9d03cdaf7222 FOREIGN KEY (parent_grouping_id)
REFERENCES grouping (grouping_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITHOUT OIDS;
ALTER TABLE grouping OWNER TO napdba;
Thanks In Advance.
I have a simple table below and I want to be able to write a SQL select query that returns the grouping_ids until I get no more children. The parent_grouping_id column is the parent to the grouping_id child column. Can somebody please advise me how I can do this in postgreSQL.
CREATE TABLE grouping
(
grouping_id int4 NOT NULL,
version int4,
parent_grouping_id int4,
topic_topic_id int4,
CONSTRAINT grouping_pkey PRIMARY KEY (grouping_id),
CONSTRAINT fk1e2e9d036852722d FOREIGN KEY (topic_topic_id)
REFERENCES topic (topic_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk1e2e9d03a1bfbfe FOREIGN KEY (topic_topic_id)
REFERENCES topic (topic_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT fk1e2e9d03cdaf7222 FOREIGN KEY (parent_grouping_id)
REFERENCES grouping (grouping_id) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITHOUT OIDS;
ALTER TABLE grouping OWNER TO napdba;
Thanks In Advance.