Vous pouvez simplement joindre la table de différentes bases de données. Vous devez spécifier le nom de la base de données dans votre FROM
clause. Pour le raccourcir, ajoutez un ALIAS
dessus,
SELECT a.*, -- this will display all columns of dba.`UserName`
b.`Message`
FROM dba.`UserName` a -- or LEFT JOIN to show all rows whether it exists or not
INNER JOIN dbB.`PrivateMessage` b
ON a.`username` = b.`username`
mais certains comment, il y a des possibilités où-dans un username
n'aura pas de messages. Dans ce cas, utilisez LEFT JOIN
si vous souhaitez toujours afficher tous les enregistrements de dba.Username
.
En lisant vos commentaires, les tableaux ont un collation
différent . La solution consiste à spécifier COLLATE
sur vos relevés joints,
SELECT a.*, -- this will display all columns of dba.`UserName`
b.`Message`
FROM dba.`UserName` COLLATE latin1_swedish_ci a
LEFT JOIN dbB.`PrivateMessage` COLLATE latin1_swedish_ci b
ON a.`username` = b.`username`
vous pouvez changer latin1_swedish_ci
à tout ce que vous voulez.
Pour plus d'informations sur COLLATION, consultez cette liste complète de
Jeux de caractères et classements dans MySQL
Si vous avez suffisamment de privilèges pour ALTER
les tables, utilisez simplement cette syntaxe pour convertir et faire correspondre manuellement leurs classements,
ALTER TABLE tbl_name CONVERT TO CHARACTER SET latin2 COLLATE 'latin2_general_ci';