OK....I thought I knew something....then I realized I didn't know anything....With out the use of derived tables, since sybase 12 can't use them...USE NorthwindGOUSE NorthwindGOCREATE TABLE myTable99(Col1 int, Col2 varchar(10))GOINSERT INTO myTable99(Col1, Col2)SELECT 1, 'Apple' UNION ALLSELECT 1, 'Banana' UNION ALLSELECT 2, 'Cherry' UNION ALLSELECT 3, 'Pear' UNION ALLSELECT 2, 'Apple'GO SELECT * FROM myTable99 SELECT a.Col1 AS a_Col1, a.Col2 AS a_Col2, b.Col1 AS b_Col1, b.Col2 AS b_Col2 FROM myTable99 a LEFT JOIN myTable99 b ON a.Col1 = b.Col1 -- Produce the wrong results SELECT a.Col1 AS a_Col1, a.Col2 AS a_Col2, b.Col1 AS b_Col1, b.Col2 AS b_Col2 FROM myTable99 a LEFT JOIN myTable99 b ON a.Col1 = b.Col1 WHERE a.Col2 = 'Apple' AND (b.Col2 = 'Banana' OR b.Col2 IS NULL) SELECT a.Col1 AS a_Col1, a.Col2 AS a_Col2, b.Col1 AS b_Col1, b.Col2 AS b_Col2 FROM myTable99 a LEFT JOIN myTable99 b ON a.Col1 = b.Col1 AND a.Col2 = 'Apple' AND (b.Col2 = 'Banana' OR b.Col2 IS NULL) SELECT a.Col1 AS a_Col1, a.Col2 AS a_Col2, b.Col1 AS b_Col1, b.Col2 AS b_Col2 FROM myTable99 a LEFT JOIN myTable99 b ON a.Col1 = b.Col1 AND a.Col2 = 'Apple' WHERE (b.Col2 = 'Banana' OR b.Col2 IS NULL) AND a.Col2 <> 'Banana'GO-- But this produces the correct results SELECT a.Col1 AS a_Col1, a.Col2 AS a_Col2, b.Col1 AS b_Col1, b.Col2 AS b_Col2 FROM (SELECT * FROM myTable99 WHERE Col2 = 'Apple') AS a LEFT JOIN (SELECT * FROM myTable99 WHERE Col2 = 'Banana') AS b ON a.Col1 = b.Col1GO SELECT * INTO myTable00 FROM myTable99 WHERE Col2 = 'Apple' SELECT * INTO myTable01 FROM myTable99 WHERE Col2 = 'Banana'GO SELECT a.Col1 AS a_Col1, a.Col2 AS a_Col2, b.Col1 AS b_Col1, b.Col2 AS b_Col2 FROM myTable00 a LEFT JOIN myTable01 b ON a.Col1 = b.Col1GODROP TABLE myTable00DROP TABLE myTable01DROP TABLE myTable99GO
Brett8-)