2011-02-06 5 views
1

У меня есть одна база данных, которая содержит всю информацию о пользователе, включая имя. Затем есть вторая база данных, которая содержит заметки от пользователей и содержит #id, но не имя. Запрос, который я делаю, чтобы получить заметки пользователя, не имеет имени, поэтому все его действия показывают заметки, а затем прямо под ним. Я делаю еще один запрос, чтобы получить имя из первой базы данных с помощью общего #id. Но это не покажет.Как показать значения из двух разных запросов?

Есть ли способ, которым я могу сделать этот запрос в одном? Пожалуйста помоги. Благодарю.

ответ

1

Использование:

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.

1

Возможно, вам потребуется показать код, но вы можете писать запросы против двух баз данных (или схем) на одном и том же хосте, просто квалифицируйте имена таблиц с именем базы данных, например.

SELECT db1.user.id, db1.user.name, db2.userinfo.notes 
FROM db1.user 
INNER JOIN db2.userinfo ON(db1.user.id=db2.userinfo.id) 

Учетные данные, с которыми вы связываетесь, должны иметь доступ к обеим базам данных, чтобы это работало, конечно.

Смежные вопросы