To perform a self-join you just have to alias one or both tables.
In your case, you want to join on ( I guess) the SLM + CUST + ITEM,
restricting the tables to, respectively, 2003 and 2002.  Further, you
want to filter out any rows where there's a match in 2002.

I believe the following does it:

select s03.* , s02.id
from sales s03 left outer join sales s02 
       on s03.item = s02.item and s03.slm = s02.slm and s03.cust =
s02.cust
    and year(s02.date) = 2002
WHERE year(s03.date) = 2003 
and s02.id is null;

> -----Original Message-----
> From: Charles Haven [mailto:[EMAIL PROTECTED] 
> Sent: Monday, July 14, 2003 8:30 AM
> To: [EMAIL PROTECTED]
> Subject: LEFT SELF Join -- LEFT join on same table
> 
> 
> Hello all,
> 
> Is it possible to LEFT JOIN a table to itself?
> 
> I want to see all records in a table where the year of the 
> sales date is 
> 2003 and where the salesman sold an item to a customer to 
> which he did not 
> sell that item to in 2002.
> 
> The following is an example table (SALES):
> 
> +----+-----+------+------------+--------+------+-----+
> | ID | SLM | CUST | DATE       | ITEM   | COST | QTY |
> +----+-----+------+------------+--------+------+-----+
> | 1  | 1   | AAA  | 2002-01-01 | APPLE  | 1.00 | 2   |
> | 2  | 1   | BBB  | 2002-01-01 | APPLE  | 1.00 | 2   |
> | 3  | 1   | CCC  | 2002-01-01 | PEAR   | 1.00 | 2   |
> | 4  | 1   | AAA  | 2002-01-01 | PEAR   | 1.00 | 2   |
> | 5  | 2   | AAA  | 2002-01-01 | APPLE  | 1.00 | 2   |
> | 6  | 3   | CCC  | 2002-01-01 | BANANA | 1.00 | 2   |
> | 7  | 1   | AAA  | 2003-01-01 | APPLE  | 1.00 | 2   |
> | 8  | 2   | AAA  | 2003-01-01 | APPLE  | 1.00 | 2   |
> | 9  | 3   | CCC  | 2003-01-01 | BANANA | 1.00 | 2   |
> | 10 | 1   | AAA  | 2003-01-01 | BANANA | 1.00 | 2   |
> | 11 | 3   | CCC  | 2003-01-01 | APPLE  | 1.00 | 2   |
> +----+-----+------+------------+--------+------+-----+
> 
> What I want to see in my result is that in 2003 Salesman 1 
> sold bananas to 
> customer AAA and salesman 3 sold apples to customer CCC. I 
> want to see 
> these because these salesmen did not sell these customers 
> these items in 2002.
> 
> Thanks,
> Charles
> 
> 
> 
> -- 
> MySQL General Mailing List
> For list archives: http://lists.mysql.com/mysql
> To unsubscribe:    
> http://lists.mysql.com/mysql?> [EMAIL PROTECTED]
> 
> 


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to