What you designate as a problem with "_1" appearing on the table names is actually not a problem. When a specific table name is already used in the report, Crystal will automatically "alias" the second table with the same name by adding "_1" to the end of the name. This is just an alias, not the actual table name.
The problem I suspect you're going to run into is that you'll have some patients that have appointments with only Company A and some with appointments with only Company B. So just linking tables together is not going to work for you.
Based on some of the wording in your question, I assume that you're connecting to SQL Server - is that correct? If it is, there's a way of running a query on one DB and "linking" to another DB to get data from there as well. How good are your SQL skills? In Crystal you could write a single Command (SQL Select statement) in the report that will union together the data from both databases to get what you're looking for. There are a couple of things to remember when using commands:
1. If you're using a command, always include ALL of the data you need for your report in a single command. Although you can link tables and commands, it can significantly impact the speed of the report.
2. Any filtering of the data needs to happen in the command - do not use the Select Expert to filter the data.
3. If you're using parameters to filter the data, DO NOT create the parameters in the Field Explorer in the report. Instead, create them in the Command Editor. They will then appear in the Field Explorer in the report. There are some additional "behind the scenes" properties of parameters that are created in the Command Editor that aren't in the ones created in the Field Explorer and Crystal isn't able to use parameters created in the Field Explorer inside commands.
-Dell