2014-09-10 98 views
0

请看下面的表格结构。MySQL:从多个表中检索数据

enter image description here

Client表具有foreign keyProvider表,这是不NULLPortfolio表的foreign key表为Client表,它也不是NULL

我需要检索从Portfolio表中的所有领域,Client的名称和谁被分配到由Portfolio表所指的ClientProvider名称..

我怎样才能做到这一点的SQL码?

回答

0

尝试使用INNER JOIN进行查询。

SELECT Portfolio.*,Client.name as "Client Name",Provider.name as "Provider Name" 
FROM Portfolio 
INNER JOIN Client ON Portfolio.Client_id=Client.id 
INNER JOIN Provider ON Client.Provider_id = Provider.id 
+0

它的工作原理,但有没有我们可以取代Client'表“名称的'“名称”列标题的方式“输出中”Provider“表的列?因为每个人都有相同的名称'名称'?除此之外,它将返回所有3个表中的所有数据? – 2014-09-10 10:55:27

+0

是的,你可以。而不是'*'你用'alias name'写出了所有'列重复名称' – Sadikhasan 2014-09-10 10:56:51

+0

我的意思是我需要'投资组合'中的所有数据,但不是来自其他人。那么我应该在哪里指定列名? – 2014-09-10 10:58:35

0

这应该给你你所期望的结果:

Select * from client 
    join portfolio on client.id=portfolio.clientId 
    join provider on client.provider_id=provider.id 
+0

因为除了'Provider',我不需要表中的所有字段,所以我如何指定我需要的列并为其分配'别名'? – 2014-09-10 11:02:22

+0

@Sniper添加您需要的列名称而不是客户端。如果您有公共名称,则必须将表名添加为前缀。 – Jens 2014-09-10 12:59:48