首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用多个内联接时选择所有字段

在使用多个内联接时选择所有字段
EN

Stack Overflow用户
提问于 2018-08-13 11:29:47
回答 2查看 36关注 0票数 0

我有张像这样的桌子

participant_coach表

代码语言:javascript
复制
id----nutrition_coach----mental_coach----movement_coach
1 ----       2       ----      5     ----      4

教练桌

代码语言:javascript
复制
id----name----email----
2 ----NAME---- @@@@ ----

通过一个Inner Join,我想得到每个教练的全部数据。

下面是我的当前查询

代码语言:javascript
复制
SELECT
    c1 AS nutrition_coach,
    c2 AS movement_coach,
    c3 AS mental_coach
FROM participant_coaches AS pc 
INNER JOIN coaches AS c1 ON pc.nutrition_coach = c1.id 
INNER JOIN coaches AS c2 ON pc.movement_coach = c2.id 
INNER JOIN coaches AS c3 ON pc.mental_coach = c3.id 
WHERE participant = + participantId

这是不起作用的,它会产生一个错误,即它不知道字段c1。但是,当我只想从我的c1表中选择1个属性时,这是可行的。

例如,这是可行的。

代码语言:javascript
复制
SELECT c1.id AS nutrition_coach, 
       c2.id AS movement_coach, 
       c3.id AS mental_coach

返回:

代码语言:javascript
复制
mental_coach: 3
movement_coach: 1
nutrition_coach: 2

无论如何,我可以从只有1?**的c1**instead中选择中的所有字段。

以下是我想要达到的目标

响应:

代码语言:javascript
复制
    {
       mental_coach: {
          id: 1
          name: 'MYNAME'
          email '@@@@'
       }
       movement_coach: {
          ...
       }
       nutrition_coach: {
          ...
       }
   }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-13 11:35:28

id名称电子邮件

除了select之外,您的查询很好。MySQL没有表示表中整个行的“记录”的概念。您需要显式地列出这些列:

代码语言:javascript
复制
SELECT c1.id AS nutrition_coach_id,
       c1.name AS nutrition_coach_name,
       c1.email AS nutrition_coach_email,       
       c2.id AS movement_coach_id,
       c2.name AS movement_coach_name,
       c2.email AS movement_coach_email,
       c3.id AS mental_coach_id,
       c3.name AS mental_coach_name,
       c3.email AS mental_coach_email
票数 2
EN

Stack Overflow用户

发布于 2018-08-13 11:31:34

select语句只引用表示表的别名,但实际上没有说明要使用哪一列。想必你想报告三种不同类型的教练的名字,在这三种不同类型的教练中,以下内容应该是有效的:

代码语言:javascript
复制
SELECT
    c1.name AS nutrition_coach,
    c1.email AS nutrition_coach_email, -- etc. for other fields
    c2.name AS movement_coach,
    c3.name AS mental_coach
FROM participant_coaches AS pc 
INNER JOIN coaches AS c1
    ON pc.nutrition_coach = c1.id 
INNER JOIN coaches AS c2
    ON pc.movement_coach = c2.id 
INNER JOIN coaches AS c3
    ON pc.mental_coach = c3.id 
WHERE participant = <participantId>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51821325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档