Re: a select statement that sometimes joins

From: "Oliver Elphick" <olly(at)lfix(dot)co(dot)uk>
To: Mark Stosberg <mark(at)summersault(dot)com>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: a select statement that sometimes joins
Date: 2001-04-10 20:05:45
Message-ID: 200104102005.f3AK5k200681@linda.lfix.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

Mark Stosberg wrote:
>
>
>
>Here's a situation I've run into more than once with SQL:
>
>I want to select all the rows in a table that match a criteria, where one
>of the criteria is possibly having a related entry in a second table. For
>my example, lets say I have table named 'messages' and another named
>'message_attachments'. The former has a primary key of msg_id, the latter
>also contains msg_id, and has an attachment_id as it's primary key.
>
>This statement shows me all the messages that also have attachments:
>
>SELECT
> messages.msg_id,
> message_attachments.attachment_id
> FROM messages,message_attachments
> WHERE messages.msg_id = message_attachments.msg_id;
>
>But I want a statement that says: "Show me all the messages, and include
>information about an attachment if they have one"

SELECT m.msg_id, a.attachment_id
FROM messages AS m
LEFT OUTER JOIN message-attachments AS a
ON m.msg_id = a.msg_id;

This requires 7.1 for the LEFT OUTER JOIN. In 7.0.3 you could do it
with a UNION.

--
Oliver Elphick Oliver(dot)Elphick(at)lfix(dot)co(dot)uk
Isle of Wight http://www.lfix.co.uk/oliver
PGP: 1024R/32B8FAA1: 97 EA 1D 47 72 3F 28 47 6B 7E 39 CC 56 E4 C1 47
GPG: 1024D/3E1D0C1C: CA12 09E0 E8D5 8870 5839 932A 614D 4C34 3E1D 0C1C
========================================
"But seek ye first the kingdom of God, and his
righteousness; and all these things shall be added
unto you." Matthew 6:33

Browse pgsql-sql by date

  From Date Subject
Next Message Jeff Eckermann 2001-04-10 22:41:26 RE: Re: select substr???
Previous Message Joel Burton 2001-04-10 19:14:25 Re: Re: \i command