when selecting from multiple tables I get a multiplication of the records
The part of the filter that performs the join is t1.mobileno = t2.mobile AND t2.mobile = t3.mobileno. For that to be sensible, it is likely that you need two of the following three statements to be true:


mobileno is unique in traffic
mobile is unique in details
mobileno is unique in registernumbers


Because the join is returning more rows than you expect, I guess this is not the case. For further help we'll need to know the DDL for the tables (in particular the primary keys)

---EDIT

on second thoughts, I think 

WHERE     t1.mobileno = t2.mobile
     AND t2.mobile = t3.mobileno
     AND UPPER (t2.flag) = UPPER ('BEL')
     AND t1.reportdate BETWEEN '1/jan/2011' AND '1/jul/2011'
     AND (latitude &gt; 52 AND longitude &gt; 2)
     AND latitude &gt; 48
  OR (latitude &lt; 52 AND longitude &gt; 2)
  OR (latitude &gt; 52 AND longitude &lt; 2)


needs to have some more brackets:

WHERE     t1.mobileno = t2.mobile
     AND t2.mobile = t3.mobileno
     AND UPPER (t2.flag) = UPPER ('BEL')
     AND t1.reportdate BETWEEN '1/jan/2011' AND '1/jul/2011'
     AND (latitude &gt; 52 AND longitude &gt; 2)
     AND ( latitude &gt; 48 
           OR (latitude &lt; 52 AND longitude &gt; 2) 
           OR (latitude &gt; 52 AND longitude &lt; 2) )


although some of the conditions seems to be redundant