Thread

  1. subqueries

    Walt Bigelow <walt@stimpy.com> — 1999-04-12T18:58:52Z

    I am having difficulites geting the following query to run properly:
    
    I have 1 table that is called tbladdress that keeps company address
    information AND the company's contacts (employees) in the same table. 
    The company has a type id of 1, and the contact has a type id of 2.  The
    contact aslo has a field filled in which points to the agencyid field of
    the parent company.  Not every company has a contact.
    
    The query I was trying to get working:
    
    SELECT agencyid, first, last 
    FROM tbladdress
    WHERE type = 1
    AND agencyid NOT IN
    	(SELECT distinct agencylink
    	FROM tbladdress 
    	WHERE type = 2)
    ORDER BY last;
    
    This query returns 0 rows.  I manually walked through the data and
    found, yes, there are company records that should have been returned
    (about 150 of them).
    
    Just to test I did the following:
    
    CREATE table aa (name varchar(50), number int4);
    CREATE table bb (name varchar(50), number int4);
    
    I populated those tables with:
    aa: Mildred | 5
        Sam     | 6
    
    bb: Paul    | 1
        Sativa  | 2
    
    and the select:
    
    SELECT * 
    FROM aa 
    WHERE number not in (select number from bb);
    
    and I get the desired response:
    name   |number
    -------+------
    Mildred|    5
    Sam    |    6
    
    What am I doing wrong?  Can the SQL query not do a nested select on a
    table it is currently doing a select on?
    
    Thanks for any insight!
    
    Walt
    walt@stimpy.com