Обсуждение: subqueries

Поиск
Список
Период
Сортировка

subqueries

От
Walt Bigelow
Дата:
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 agencylinkFROM 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