Re: sql question (hopefully) - Mailing list pgsql-novice

From Mel Jamero
Subject Re: sql question (hopefully)
Date
Msg-id 002501c335a6$350e2ab0$1b06a8c0@CMPMEL
Whole thread Raw
In response to Re: sql question (hopefully)  (Ron Johnson <ron.l.johnson@cox.net>)
Responses Re: sql question (hopefully)
List pgsql-novice
thank you so much for the replies.  they're really appreciated.  =) please
bear with me and read on.

i wanted to find out for sure if i really won't get the desired result(s) in
sql and have to create a function instead.

yes it breaks the 1st normal form.  we did this for some *practical*
purposes supposedly. =) i would've wanted to discuss it here but i'll
probably bore you to death or i'd end up starting a new discussion
altogether.  since it's in production and i need to do a quick patch without
touching the external programs depending on this schema, i've to find a
quick remedy.

anyway, is there a way to convert the result of the 2nd sql statement as a
string literal such that:
"SELECT id FROM a_table WHERE id NOT IN (:result_of_2nd_sql_statement)"
(where ":result_of_2nd_sql_statement" is a variable) would work?

to be clear, because

"select id from b_table" yields an output of:
id
----
2,3,4

and not what it would've if i normalized the table instead:
id
----
2
3
4

is it possible to make the resulting sql statement become "select id from
a_table where id not in (2,3,4)" by just using a function inherent to sql
(such as 'to_char' or 'cast' or an unknown function to me that takes in the
result of an sql statement and converts it somehow)?

thus, the result of the 2nd sql statement which is "2,3,4" is substituted in
to my original sql statement.

it's easier to do it outside the db backend (C, JAVA, PERL, TCL or whatever)
but i'm really trying hard to achieve it from the backend.

anyway, i've tried the ff but haven't found the solution yet:
1) assign the result in the sql statement to a variable and proceed with
select #1 substituting the variable
2) "convert" the result of the sql statement "select id from b_table" into
characters to apply the 1st sql statement.

i'm currently creating a function that's suppose to do the trick because i'm
tired out from finding quicker remedies.

the idea of echoing the result of the 2nd sql statement to a file and then
echoing it back to the psql command line crossed my mind but it doesn't
appear to be a neat implementation if ever it would work.

any other ideas?

thanks again!  my apologies for being too wordy.

-----Original Message-----
From: pgsql-novice-owner@postgresql.org
[mailto:pgsql-novice-owner@postgresql.org]On Behalf Of Ron Johnson
Sent: Wednesday, June 18, 2003 9:19 PM
To: PgSQL Novice ML
Subject: Re: [NOVICE] sql question (hopefully)


On Wed, 2003-06-18 at 07:38, Mel Jamero wrote:
> will try to keep this as short as possible. =)
>
> 1. "select id from a_table where id not in (2,3,4)" works fine
>
> 2. "select id from a_table where id not in (select id from b_table)" works
> fine if the output of the "select id from b_table" looks like:
> id
> ----
>  2
>  3
>  4
>
> problem is "select id from b_table" in #2 statement has the following
> output:
> id
> ----
> 2,3,4
>
> how do i do execute the query in a single sql statement?

b_table.id has Repeating Values, which breaks the 1st Normal Form
of relational DBMS design.

Thus, redesign b_table so that id only has 1 value.

--
+-----------------------------------------------------------+
| Ron Johnson, Jr.     Home: ron.l.johnson@cox.net          |
| Jefferson, LA  USA   http://members.cox.net/ron.l.johnson |
|                                                           |
| "Oh, great altar of passive entertainment, bestow upon me |
|  thy discordant images at such speed as to render linear  |
|  thought impossible" (Calvin, regarding TV)               |
+-----------------------------------------------------------


---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html


pgsql-novice by date:

Previous
From: Tom Lane
Date:
Subject: Re: Commit within a PL/PGSQL procedure
Next
From: "Mel Jamero"
Date:
Subject: Re: sql question (hopefully)