Mysql
 sql >> Base de données >  >> RDS >> Mysql

Connecter plusieurs tables dans différentes bases de données ? MySql

Une bonne stratégie pour vous pourrait être de définir un seul utilisateur MySQL qui a le même accès aux deux bases de données. Quelque chose comme ça :

GRANT ALL ON siteinfo.* TO [email protected] IDENTIFIED BY 'password';
GRANT ALL ON sitedescriptions.* TO [email protected] IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

Une fois que vous avez établi une connexion en tant qu'utilisateur, vous aurez accès aux deux bases de données et pourrez les référencer facilement en préfixant vos noms de table avec le nom de la base de données.

SELECT * FROM siteinfo.sites;

Vous pouvez même joindre vos tables à travers des bases de données de cette manière sans difficulté. Donc, pour répondre à votre deuxième question, pour obtenir les trois lignes de description d'un site, vous pouvez le faire (en supposant que les sites ont les mêmes identifiants dans chaque base de données, ou le même nom, ou quelque chose d'unique sur lequel vous pouvez vous joindre) :

SELECT * FROM
    siteinfo.sites AS s LEFT JOIN 
    sitedescriptions.description AS d ON s.siteId=d.siteId
WHERE s.siteId=123;