A lot of it depends on the structure and data in your tables. If you were to take the SQL generated by Crystal and run it directly against the database outside of Crystal, you would also see duplicate data.
One of the things you can do to prevent it is to turn on "Select Distinct Records" on the database menu. However, if the data in even just one field that you're using on the report is different, you'll see what may look like "duplicate" data. In this case you can frequently use groups to avoid presenting duplicate data on the report.
-Dell