Your best bet in this situation will be to write a "Command", which is nothing more than a "Select" statement that pulls ALL of the data for your report. It will use the syntax that is specific to your database - you cannot use any Crystal functions in it. The Command will replace the SQL that Crystal would normally build based on the tables and joins configured in the Database Expert.
In general, you do NOT want to combine multiple commands or a command and one or more tables - this configuration will cause Crystal to pull all of the data into memory to do the joins there instead of passing the joins down to the database. The one exception I make to this rule is when I am using a command or a table as the Datasource for a dynamic prompt - then I'll add the command or table and NOT link it to anything else in the report. Crystal will throw a warning about this, but if you only use the data from the additional command/table in the dynamic prompt and not anywhere on the report there are no problems with it.
Likewise, you do not want to use the Select Expert to set your data selection criteria as that will also cause Crystal to pull all of the data into memory before filtering it. Instead, you'll put all of the selection criteria in the Where clause of the command. If you use parameters to filter the data, they MUST be created in the Command Editor - these parameters have some additional "behind the scenes" properties that parameters created in the main part of the report don't have. You don't have a lot of options when creating these parameters. However, after the Command has been saved, you can edit the command parameters in the Field Explorer on the report in order to set additional properties on them.
-Dell