Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 2 of 2 total
Thread BUG IN SQL!
Sat, Jan 28 2006 12:13 PMPermanent Link

Roger Oliveira

I FOUND A BUG IN SQL,
I HAVE TWO MEMORY TABLES:

"MEMORY\TABLE1"
 COD INTEGER
 DESCRIPTION VARCHAR(35)

"MEMORY\TABLE2"
 COD INTEGER
 DESCRIPTION VARCHAR(35)


 TABLE1 HAVE 10 RECORDS AND TABLE2 HAVE 8 RECORDS

 THIS SQL :
 
    SELECT * FROM "MEMORY\TABLE1","MEMORY\TABLE2"  

 IT WOULD HAVE TO RETURN 18 RECODS, CORRECT?  BUT IT RETURNED 80 RECORDS, WHAT IS WRONG?  
 IT SEEMS THAT IT MULTIPLIED THE RECORDCOUNTS.
 IT RETURNED REPEATED REGISTERS!

>> ROGER COSTA DE OLIVEIRA
     GRAVATAÍ/RS  (BRAZIL)
 
    TRANSLATED OF (PORTUGUESE TO ENGLISH)

Sat, Jan 28 2006 12:24 PMPermanent Link

Eryk Bottomley
Roger,

>      SELECT * FROM "MEMORY\TABLE1","MEMORY\TABLE2"  
>
>   IT WOULD HAVE TO RETURN 18 RECODS, CORRECT?

Incorrect. It is a cartesian product query so it will match every record
in TABLE1 against every record in TABLE2 - i.e. 10*8 = 80 records. What
I assume you were trying to do is this:

     SELECT * FROM "MEMORY\TABLE1"
     UNION ALL
     SELECT * FROM "MEMORY\TABLE2"

Eryk
Image