pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Rob V <taketwosolutions@gmail.com>
To: pgsql-sql@postgresql.org
Subject: LEFT Join Question
Date: Thu, 25 Jan 2007 18:51:34 -0500
Message-ID: <34785f060701251551u23538daej2b45f0c522bf1b7a@mail.gmail.com> (raw)

Hello all,

Ive been racking my brain for a few hours now and need some help, please!!!

I have the following tables :

account
=account_id
=account_type_id
=account_username

vendor
=account_id
=vendor_status

contact_name
=account_id
=name
=domain_type_id

contact_address
=account_id
=address
=domain_type_id

contact_email
=account_id
=email
=domain_type_id

contact_phone
=account_id
=phone
=domain_type_id

account_type
=account_type_id
= account_type_tag
records :
1 VENDOR
2 SELLER
3 CONTRACTOR

domain_type
=domain_type_id
=domain_type_tag
records :
1 PRIMARY
2 SECONDARY


Im looking for a select that will give me all records where the
account_type_tag ="VENDOR" and domain_type_tag = "PRIMARY"
even if the address, email and phone are blank.

Users WILL HAVE records in the following tables :
account,
vendor
contact_name
contact_email
they MAY or MAYNOT have records in the following tables :
contact_address
contact_phone

I know I have to use a left join - but I can seem to figure out the syntax
when dealing w/ different columns of the same table.
Im basically looking for this :
account_username      vendor_status         name             address
        email                 phone
---------------------------------------------------------------------------------------------------------------------------------------------------------
Rob123                       ACTIVE                  ROB             123
Test Drive    rob@here.com    555-1212
BILL123                       ACTIVE                  Bill
NULL              bill@here.com     456-4444
Steve1234                  INACTIVE             Steve                 654
Hill St         steve@here.com NULL


I know I have to use a left join - but I can seem to figure out the syntax
when dealing w/ different columns of the same table.
(do I still need the = in the where clause when using a left join?)
SELECT
 account.account_id,
 account.account_username,
 vendor.vendor_status,
 contact_name.name,
 contact_address.address,
 contact_email.email,
 contact_phone.phone
FROM
 account a
 LEFT JOIN contact_phone on (contact_phone.account_id = a.account_id)
 LEFT JOIN contact_address on (contact_address.account_id = a.account_id),
 vendor,
 contact_email,
 contact_name,
 domain_type,
 account_type,
WHERE
 vendor.vendor_id = account.account_id AND
 contact_email.account_id = account.account_id AND
 contact_name.account_id = account.account_id AND
 account.account_type_id = account_type.account_type_id AND
 contact_email.domain_type_id = domain_type.domain_type_id AND
 contact_name.domain_type_id = domain_type.domain_type_id AND
 vendor.vendor_status_code_id = vendor_status_code.vendor_status_code_id AND

 account_type.account_type_tag = 'ACCOUNT_VENDOR' AND
 domain_type.domain_type_tag = 'VENDOR_PRIMARY'


The problem Im having is b/c Im only looking for specific domain types I
have a join on the contact address and phone tables where the
domain types match - but if there are no records - it causes the entire
record not to be show - so I need to do a left join on that table as well
but If I try to do it -  I get an error " table name "contact_phone"
specified more than once"
 Any help would be great!!!

 Thanks
 -Rob

view thread (5+ messages)  latest in thread

Message-ID: <34785f060701251551u23538daej2b45f0c522bf1b7a@mail.gmail.com>
Permalink:  ../34785f060701251551u23538daej2b45f0c522bf1b7a@mail.gmail.com/
Also on:    postgresql.org/message-id/34785f060701251551u23538daej2b45f0c522bf1b7a@mail.gmail.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: taketwosolutions@gmail.com
  Subject: Re: LEFT Join Question
  In-Reply-To: <34785f060701251551u23538daej2b45f0c522bf1b7a@mail.gmail.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

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