2015-04-27 3 views
0

Мне нужен объединенный (Union like) результат из нескольких баз данных на одном сервере баз данных в одном запросе. Каждая база данных клиентов содержит таблицу местоположений, и все клиенты перечислены в базовой базе данных.JOIN базы данных от SELECT

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

Я фигурирую примерно так.

SELECT customerlist.dbname,customerlist.realname,location.address 
FROM core.customerlist 
INNER JOIN `customer.dbname`.location 
ORDER BY customerlist.realname 

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

Структура базы данных:

-- Database: `core` 

CREATE TABLE IF NOT EXISTS `customerlist` (
    `realname` varchar(20) NOT NULL, 
    `dbname` varchar(16) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

INSERT INTO `customerlist` (`realname`, `dbname`) VALUES 
('Johnny', 'johnny'), 
('Alfred', 'alfred'); 

-- -------------------------------------------------------- 
-- Database: `alfred` 

CREATE TABLE IF NOT EXISTS `location` (
    `address` varchar(20) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

INSERT INTO `location` (`address`) VALUES 
('House Three'), 
('Car 1'); 

-- -------------------------------------------------------- 
-- Database: `johnny` 

CREATE TABLE IF NOT EXISTS `location` (
    `address` varchar(20) NOT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

INSERT INTO `location` (`address`) VALUES 
('House One'), 
('House Two'); 

Желаемый результат;

johnny,Johnny,House One 
johnny,Johnny,House Two 
alfred,Alfred,House Three 
alfred,Alfred,Car 1 
+2

возможно дубликат [MySQL - соединение между таблицами в двух разных базах данных?] (http://stackoverflow.com/questions/5698378/mysql-join-between-tables-in-2-different-databases) – bdunn

+0

Я не делал этого раньше, и не делаю даже знаю, можете ли вы это сделать, но вам действительно нужно добавить дополнительную информацию, например, что именно «не работает». Вы получаете сообщение об ошибке? Или просто недействительные данные? В верхней части головы вам следует назначать синонимы этим объявлениям таблиц, если у вас есть одноименные таблицы в нескольких базах данных. – CargoMeister

+0

Каков результат этого? – Joop

ответ

0

Вы должны быть осторожными в две таблицы идентичных таблиц ... присоединиться к ним в союзе, если хорошо, так как они идентичны по структуре:

SELECT customerlist.dbname,customerlist.realname,location.address 
FROM core.customerlist 
LEFT JOIN (
    SELECT * FROM (johnny.location UNION alfred.location 
    )) AS T2 ON customerlist.dbname = T2.dbname 
ORDER BY customerlist.realname 
+0

Не решает проблему, статически заданные здесь «johnny» и «alfred». Запрос необходимо объединить в базы данных, указанные в core.customerlist, динамически. Это могут быть две базы данных или> 100. – Neergaard

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