I never thought of putting an additional condition on the LEFT JOIN. That seems to do the trick.
My original query, with the sub-SELECT, does work. Both your technique and mine generate identical results. I did an EXPLAIN on each technique, but I don't know enough to interpret it. Since the "rows" is identical except for the last bit, where mine is 4 and yours is 2, does that mean yours is roughly more efficient by a 2:1 ratio? My real query is rather more complicated that the one we originally discussed, but I don't think that affects the comparison. You'll notice that I changed one of your ON clauses to a WHERE clause, and that did not change the EXPLAIN output one iota. Here are the results of the EXPLAINs: mysql> explain -> SELECT prod.prod_num, -> prod_price.prod_price_del_format, -> "USD", -> prod_price.prod_price_disp_price, -> "YEN", -> prod_price.prod_price_end_price * @exchange AS yen_end_price -> -> FROM -> pub JOIN -> prod JOIN -> prod_price LEFT JOIN -> prod_price AS pp ON (prod.prod_id = pp.prod_id AND pp.prod_price_end_cu rr = 'YEN') -> -> WHERE -> pub.pub_code IN ('ENER', 'FIT', 'GOVT', 'HEAL', 'ID', 'LIFE', 'MANU ') -> AND pub.pub_id = prod.pub_id -> AND prod.prod_id = prod_price.prod_id -> AND prod.prod_discont = 0 -> AND prod_price.prod_price_end_curr = 'USD' -> AND pp.prod_id IS NULL\G *************************** 1. row *************************** id: 1 select_type: SIMPLE table: prod_price type: ALL possible_keys: prod_id key: NULL key_len: NULL ref: NULL rows: 75230 Extra: Using where *************************** 2. row *************************** id: 1 select_type: SIMPLE table: prod type: eq_ref possible_keys: PRIMARY,pub_id key: PRIMARY key_len: 45 ref: giiexpr_db.prod_price.prod_id rows: 1 Extra: Using where *************************** 3. row *************************** id: 1 select_type: SIMPLE table: pub type: eq_ref possible_keys: PRIMARY key: PRIMARY key_len: 45 ref: giiexpr_db.prod.pub_id rows: 1 Extra: Using where *************************** 4. row *************************** id: 1 select_type: SIMPLE table: pp type: ref possible_keys: prod_id key: prod_id key_len: 46 ref: giiexpr_db.prod.prod_id rows: 2 Extra: Using where ============================================================== mysql> explain -> SELECT prod.prod_num, -> prod_price.prod_price_del_format, -> "USD", -> prod_price.prod_price_disp_price, -> "YEN", -> prod_price.prod_price_end_price * @exchange AS yen_end_price -> -> -> FROM -> pub JOIN -> prod JOIN -> prod_price -> -> WHERE -> pub.pub_code IN ('ENER', 'FIT', 'GOVT', 'HEAL', 'ID', 'LIFE', 'MANU ') -> AND pub.pub_id = prod.pub_id -> AND prod.prod_id = prod_price.prod_id -> AND prod.prod_discont = 0 -> AND prod_price.prod_id NOT IN -> (SELECT prod_price.prod_id -> FROM prod_price -> WHERE prod_price.prod_price_end_curr = 'YEN')\G *************************** 1. row *************************** id: 1 select_type: PRIMARY table: prod_price type: ALL possible_keys: prod_id key: NULL key_len: NULL ref: NULL rows: 75230 Extra: Using where *************************** 2. row *************************** id: 1 select_type: PRIMARY table: prod type: eq_ref possible_keys: PRIMARY,pub_id key: PRIMARY key_len: 45 ref: giiexpr_db.prod_price.prod_id rows: 1 Extra: Using where *************************** 3. row *************************** id: 1 select_type: PRIMARY table: pub type: eq_ref possible_keys: PRIMARY key: PRIMARY key_len: 45 ref: giiexpr_db.prod.pub_id rows: 1 Extra: Using where *************************** 4. row *************************** id: 2 select_type: DEPENDENT SUBQUERY table: prod_price type: index_subquery possible_keys: prod_id key: prod_id key_len: 46 ref: func rows: 4 Extra: Using index; Using where Thoughts? Explanations? Thanks. Regards, Jerry Schwartz The Infoshop by Global Information Incorporated 195 Farmington Ave. Farmington, CT 06032 860.674.8796 / FAX: 860.674.8341 www.the-infoshop.com www.giiexpress.com www.etudes-marche.com -- MySQL General Mailing List For list archives: http://lists.mysql.com/mysql To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]