Запрос двух баз данных одновременно с использованием подготовленных операторов - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть функция с именем getData ($ Books, $ Users, $ InputID); , которая получает два подключения к базе данных и идентификатор пользователя.

В базе данных пользователей у меня есть таблица с именем Пользователи

-----------------
UserID | UserName
-----------------

В базе данных книг у меня есть таблица с именем Книги

 ------------------------------
 BookID | BookName | BookUserID
 ------------------------------

Я хочу написать ONE запрос, который будет:

Выберите пользователя в таблице Users с UserID = $ InputID , а также выберите книгу на Книги Таблица, где BookUserID = $ InputID ;

Это должно быть сделано с использованием подготовленного оператора. Это то, что я пробовал.

function getData($Books, $Users, $InputID){

$fetch_results = prepare('SELECT * from UsersDB.Users U LEFT JOIN BooksDB.Books B ON B.BookUserID = U.UserID   Where UserID = :InputID');

$fetch_results->execute(array(':userID' => $InputID));
return $Data;

}

1 Ответ

0 голосов
/ 20 ноября 2018

если обе ваши БД (UserDb, BooksDB) на одном и том же сервере, тогда запрос будет выглядеть как.

SELECT u.UserName, b.BookName
FROM UserDB.dbo.Users u
     INNER JOIN BooksDB.dbo.Books b 
     ON b.UserId = b.BookUserId
WHERE u.UserId = $InputID
      OR BookUserID = $InputID;

Если ваши обе БД (UserDB, BooksDB) на другом сервере, то.Сначала вам нужно создать ссылку для другого сервера, а затем запустить следующий запрос с именем ссылки: пусть ваша ссылка Name называется LinkServer2, и вы запускаете запрос от server1.UserDB.Убедитесь, что вы используете полное имя для связанного сервера.

SELECT u.UserName, b.BookName
FROM UserDB.dbo.Users u
     INNER JOIN LinkServer2.BooksDB.dbo.Books b 
     ON b.UserId = b.BookUserId
WHERE u.UserId = $InputID
      OR BookUserID = $InputID;

, если вы хотите использовать LEFT JOIN и получить все количество столбцов (SELECT *), тогда вы можете сделать это без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...