RE: [SQL] Beginner question - select with multiple tables

From: "Jackson, DeJuan" <djackson(at)cpsgroup(dot)com>
To: Herouth Maoz <herouth(at)oumail(dot)openu(dot)ac(dot)il>, Dave Inskeep <dinskeep(at)yahoo(dot)com>
Cc: pgsql-sql(at)postgreSQL(dot)org
Subject: RE: [SQL] Beginner question - select with multiple tables
Date: 1999-01-20 15:25:53
Message-ID: F10BB1FAF801D111829B0060971D839F5F8072@cpsmail
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

> > select distinct vall.node from vall, vall_bod1, vall_bod2 where
> > ( vall.node = vall_bod1.node and vall_bod1.bod1 LIKE '%brake%' ) or
> > ( vall.node = vall_bod2.node and vall_bod2.bod2 LIKE '%brake%' );
> >
> > However, if I insert a record into vall_bod2 (whether or not it
> > contains the word brake) and a corresponding header record into vall
> > with a matching node, the same exact query will return the nodes of
> > all records in vall_bod1 with the word 'brake' in the bod1 field.
> >
> > The same holds true if I query across vall_bod1, 2, and 3, and there
> > are no records in vall_bod3. If I insert a single record in
> vall_bod3,
> > even if it doesn't match, the query will work for matching
> records in
> > vall_bod1 and vall_bod2. Ditto when I try across 1-4.
> >
> > Can someone explain why this happens, am I doing something wrong? Is
> > there a better way to achieve the same results, i.e. JOINS? Does
> > Postgresql support JOINS?
>
> First, you *are* doing a join here.
>
> But you are missing the logic. Perhaps you should tell us,
> instead of what
> query you did (which obviously returns the correct results by your
> description), what was the result you wanted? What rows did
> you want to be
> returned?
>
> Herouth

What you most likely want:
select vall.node, vall_bod1.bod1
from vall, vall_bod1
where vall.node = vall_bod1.node and vall_bod1.bod1 LIKE '%brake%'
UNION
select vall.node, vall_bod2.bod2
from vall, vall_bod2
where vall.node = vall_bod2.node and vall_bod2.bod2 LIKE '%brake%';

If you are sure there won't be duplicate information in bod1 or bod2
then Make it UNION ALL (quicker).

Hope this helps,
DEJ

Browse pgsql-sql by date

  From Date Subject
Next Message James Andrews 1999-01-20 16:14:02 Selecting Table cell names
Previous Message Yuri Yurchenko 1999-01-20 10:19:35 Text type function