2015-10-18 163 views
0

我需要创建一个包含n个行值的视图(或表),该视图来自两个具有相同结构的不同表。例如:SQL - 将两个数据库表合并到一个数据库表中

表国家

id name  Country 
---------------------------- 
1  Franz  Germany 
2  Alberto  Italy 
3  Miguel  Spain 

表电子邮件

id name  Email 
---------------------------- 
1  Franz  [email protected] 
2  Alberto  [email protected] 
3  Miguel  [email protected] 

表PHONENO

id name  Phone 
---------------------------- 
1  Franz  111-111-1111 
2  Alberto  111-111-1111 
3  Miguel  111-111-1111 

合并后的数据库必须是这样的:

id name  Country  Email     Phone 
--------------------------------------------------------------------- 
1  Franz  Germany  [email protected]  111-111-1111 
2  Alberto  Italy   [email protected]  111-111-1111 
3  Miguel  Spain   [email protected]  111-111-1111 
+0

你为什么要复制所有这些表中的名称数据? – amdixon

回答

-1

尝试选择所需的列。您可以从多个表 例如像取,

SELECT id, name, email, phone FROM table1, table2, table3 
+0

如果没有加入条件,您将以3 * 3 * 3行的笛卡尔产品结束。并从哪个表编号?列歧义。 – Utsav

0

你可以尝试这样的:

Select 
Country.id, 
Country.name, 
Country.country, 
email.Email, 
phoneno.phone 

FROM 

Country 
INNER JOIN email ON (Country.id = email.id) 
INNER JOIN phoneno ON (Country.id = phoneno.id) 
+0

这是否构成一个新的表来查询?对不起,新的SQL所以不知道太多 –

+0

不,它会获取你想看到的结果集。它不会在数据库中创建任何新表。 –

0

创建一个表将重复数据;这只有在您需要创建数据快照时才有意义。 要始终查看数据的当前状态,使用一个观点:

CREATE VIEW Merged AS 
SELECT c.id, 
     c.name, 
     c.Country, 
     e.Email, 
     p.Phone 
FROM  Country AS c 
LEFT JOIN email AS e USING (id) 
LEFT JOIN phoneno AS p USING (id); 

使用的outer join将返回即使一些电子邮件或电话号码丢失行。 如果一个国家/地区的行有多个电子邮件或电话号码,则会收到重复的国家/地区数据。

+0

是的,你的权利......如果你能帮我把两个表格数据重复成一个,这将帮助我很多。 –

+0

然后编辑问题以显示相关示例数据和所需结果。 –

相关问题