MySQL:从多个表中检索数据

MySQL:从多个表中检索数据,mysql,sql,join,foreign-keys,Mysql,Sql,Join,Foreign Keys,请看下表结构 客户端表具有提供程序表的外键,该外键不为NULLPortfolio表具有客户机表的外键,该外键也不是NULL 我需要从Portfolio表中检索所有字段,客户的名称以及分配给客户的提供者名称,后者由Portfolio表引用 如何在SQL代码中执行此操作?尝试使用内部联接执行以下查询 SELECT Portfolio.*,Client.name as "Client Name",Provider.name as "Provider Name" FROM Portfolio INNE

请看下表结构

客户端
表具有
提供程序
表的
外键
,该外键不为
NULL
Portfolio
表具有
客户机
表的
外键
,该外键也不是
NULL

我需要从
Portfolio
表中检索所有字段,
客户的名称
以及分配给
客户的
提供者
名称,后者由
Portfolio
表引用


如何在SQL代码中执行此操作?

尝试使用内部联接执行以下查询

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

它可以工作,但是有没有一种方法可以替换输出中
Client
表的“Name”列的标题和
Provider
表的“Name”列?因为每个人都有相同的列名
名称
?除此之外,它还返回所有3个表中的所有数据?是的,您可以。您没有使用
*
而是使用它来编写所有
列重复名称
别名
我的意思是我需要“公文包”中的所有数据,但不需要其他数据。那么我应该在哪里指定列名呢?那么您必须编写
Portfolio.*
而不是
*
否,我要问的是如何提供
Client
Provider
表的列名称。由于我不需要表中除
Provider
以外的所有字段,我如何指定我需要的列并为它们分配
别名?@Sniper添加所需列的名称,而不是客户端。如果您有双重名称,则必须添加tablename作为前缀。