【发布时间】:2015-07-06 07:29:15
【问题描述】:
我需要一个查询中来自同一数据库服务器上的多个数据库的连接(类似联合)结果。每个客户数据库都包含一个位置表,所有客户都列在核心数据库中。
我不需要不同数据库之间的简单连接。我需要实际连接的数据库名称来自同一个查询。
我想是这样的。
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
【问题讨论】:
-
我以前没有做过,甚至不知道你是否可以做到,但你确实需要添加更多信息,例如“不起作用”究竟是什么意思。你有错误吗?还是只是无效数据?在我的脑海中,你应该为这些表声明分配同义词,以防多个数据库中有同名的表。
-
这是什么结果?
-
如果您在问题中添加您所指的表格的表格定义、一些示例数据以及基于您提供的示例数据的所需结果,那么应该有人可以帮助您。
-
这可能只是问题,但你的反引号是错误的:
`customer.dbname`.location应该是`customer`.`dbname`.location