【发布时间】:2011-02-06 17:48:18
【问题描述】:
我有一个包含所有用户信息(包括姓名)的数据库。然后是第二个数据库,其中包含来自用户的注释,它包含#id 但不包含名称。我正在执行的检索用户注释的查询没有名称,因此它所做的只是显示注释,然后在它下面我正在执行另一个查询以使用通用#id 从第一个数据库中检索名称。但它不会显示。
有没有办法一次性完成这个查询?请帮忙。谢谢。
【问题讨论】:
我有一个包含所有用户信息(包括姓名)的数据库。然后是第二个数据库,其中包含来自用户的注释,它包含#id 但不包含名称。我正在执行的检索用户注释的查询没有名称,因此它所做的只是显示注释,然后在它下面我正在执行另一个查询以使用通用#id 从第一个数据库中检索名称。但它不会显示。
有没有办法一次性完成这个查询?请帮忙。谢谢。
【问题讨论】:
用途:
SELECT u.name,
n.*
FROM DB2.NOTES n
LEFT JOIN DB1.USERS u ON n.id = u.id
ORDER BY u.name
假设连接凭据可以访问这两个数据库,您可以在表名前面添加数据库名称的前缀并用句点分隔。
LEFT JOIN 将显示两个用户,以及没有关联用户的注释。这是good primer on JOINs。
【讨论】:
您可能需要显示您的代码,但您可以针对同一主机上的两个数据库(或模式)编写查询,只需使用数据库名称限定表名,例如
SELECT db1.user.id, db1.user.name, db2.userinfo.notes
FROM db1.user
INNER JOIN db2.userinfo ON(db1.user.id=db2.userinfo.id)
您要连接的凭据必须能够访问这两个数据库才能正常工作。
【讨论】: