请看下面的表格结构。MySQL:从多个表中检索数据
Client
表具有foreign key
为Provider
表,这是不NULL
。 Portfolio
表的foreign key
表为Client
表,它也不是NULL
。
我需要检索从Portfolio
表中的所有领域,Client
的名称和谁被分配到由Portfolio
表所指的Client
的Provider
名称..
我怎样才能做到这一点的SQL码?
请看下面的表格结构。MySQL:从多个表中检索数据
Client
表具有foreign key
为Provider
表,这是不NULL
。 Portfolio
表的foreign key
表为Client
表,它也不是NULL
。
我需要检索从Portfolio
表中的所有领域,Client
的名称和谁被分配到由Portfolio
表所指的Client
的Provider
名称..
我怎样才能做到这一点的SQL码?
尝试使用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
这应该给你你所期望的结果:
Select * from client
join portfolio on client.id=portfolio.clientId
join provider on client.provider_id=provider.id
因为除了'Provider',我不需要表中的所有字段,所以我如何指定我需要的列并为其分配'别名'? – 2014-09-10 11:02:22
@Sniper添加您需要的列名称而不是客户端。如果您有公共名称,则必须将表名添加为前缀。 – Jens 2014-09-10 12:59:48
它的工作原理,但有没有我们可以取代Client'表“名称的'“名称”列标题的方式“输出中”Provider“表的列?因为每个人都有相同的名称'名称'?除此之外,它将返回所有3个表中的所有数据? – 2014-09-10 10:55:27
是的,你可以。而不是'*'你用'alias name'写出了所有'列重复名称' – Sadikhasan 2014-09-10 10:56:51
我的意思是我需要'投资组合'中的所有数据,但不是来自其他人。那么我应该在哪里指定列名? – 2014-09-10 10:58:35