I'm not terribly familiar with MySQL. Most of my experience is with Sybase and MS SQL Server (which are very closely related). In these, you simply prefix the table name with the database name and owner to access a table in a different database. (Assuming, of course, that the login has permissions on both databases.)
Suppose for example that you have two databases, common and cust1. The common table has table states which contains the full name of each state (full_name), keyed by its abbreviation (ST). The cust1 database has table customers which has the customer number (Cust_ID) and state (ST). If you're logged into cust1 and want to count all the customers by state and list the state name, you'd do something like this:
select common.dbo.states.full_name, count(customers.*)
from customers
join common.dbo.states on customers.ST = common.dbo.states.ST
group by common.dbo.states.full_name
order by common.dbo.states.full_name
So it's a bit verbose. But there's another trick you can use in these two databases: You can hide the table in the remote database behind a view so it looks just like a table in the current database. Something like this:
create view states
as select ST, full_name from common.dbo.states
Now you can perform the previous operation more naturally:
select states.full_name, count(customers.*)
from customers
join states on customers.ST = states.ST
group by states.full_name
order by states.full_name
As I said earlier, I'm not very familiar with MySQL (not having used it since about v3.1), but I'd imagine that it offers similar capabilities. Hopefully a knowledgeable MySQL or PostgreSQL user will chime in with similar operations, or improved suggestions.
--roboticus
|