UNION - different result when statements interchanged

2005-08-05 Thread Kapoor, Nishikant
I have a UNION whose statements when interchanged gives a different result. I 
can understand the change in the order of the rows, but how is it that 
'picture' gets the correct value in (a) but not in (b)? Here are the two 
queries and their results:

(a)
  (SELECT u.lName last_name, u.picture FROM teamEntry te, user u WHERE 
te.person_id = u.uId AND te.tId IN (1) LIMIT 5) 
UNION
  (SELECT a.last_name, 0 picture FROM teamEntry te, author a WHERE te.person_id 
= a.person_id AND te.tId IN (1) LIMIT 5);

last_name   picture
Kapoor  avataar02.png from table u
Manni   0 from table u
Office of Technology Assessment 0 from table a
Queue Readers   0 from table a
Milnes  0 from table a

(b)
  (SELECT a.last_name, 0 picture FROM teamEntry te, author a WHERE te.person_id 
= a.person_id AND te.tId IN (1) LIMIT 5)
UNION 
  (SELECT u.lName last_name, u.picture FROM teamEntry te, user u WHERE 
te.person_id = u.uId AND te.tId IN (1) LIMIT 5);

last_name   picture
Office of Technology Assessment 0  from table a
Queue Readers   0  from table a
Milnes  0  from table a
Kapoor  0  from table u
Manni   0  from table u

Thanks for your help,
Nishi


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



Re: UNION - different result when statements interchanged

2005-08-05 Thread Scott Noyes
From http://dev.mysql.com/doc/mysql/en/union.html :
Before MySQL 4.1.1, a limitation of UNION  is that only the values
from the first SELECT are used to determine result column types and
lengths. This could result in value truncation if, for example, the
first SELECT retrieves shorter values than the second SELECT:

You can either update to version 4.1.1 or later, when the problem was
solved, or make sure that the first SELECT retrieves columns that are
wide enough and character types.

On 8/5/05, Kapoor, Nishikant [EMAIL PROTECTED] wrote:
 I have a UNION whose statements when interchanged gives a different result. I 
 can understand the change in the order of the rows, but how is it that 
 'picture' gets the correct value in (a) but not in (b)? Here are the two 
 queries and their results:
 
 (a)
   (SELECT u.lName last_name, u.picture FROM teamEntry te, user u WHERE 
 te.person_id = u.uId AND te.tId IN (1) LIMIT 5)
 UNION
   (SELECT a.last_name, 0 picture FROM teamEntry te, author a WHERE 
 te.person_id = a.person_id AND te.tId IN (1) LIMIT 5);
 
 last_name   picture
 Kapoor  avataar02.png from table u
 Manni   0 from table u
 Office of Technology Assessment 0 from table a
 Queue Readers   0 from table a
 Milnes  0 from table a
 
 (b)
   (SELECT a.last_name, 0 picture FROM teamEntry te, author a WHERE 
 te.person_id = a.person_id AND te.tId IN (1) LIMIT 5)
 UNION
   (SELECT u.lName last_name, u.picture FROM teamEntry te, user u WHERE 
 te.person_id = u.uId AND te.tId IN (1) LIMIT 5);
 
 last_name   picture
 Office of Technology Assessment 0  from table a
 Queue Readers   0  from table a
 Milnes  0  from table a
 Kapoor  0  from table u
 Manni   0  from table u
 
 Thanks for your help,
 Nishi

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