【发布时间】:2019-01-20 02:59:25
【问题描述】:
我有一张像这样的表
participant_coach 表
id----nutrition_coach----mental_coach----movement_coach
1 ---- 2 ---- 5 ---- 4
教练桌
id----name----email----
2 ----NAME---- @@@@ ----
通过Inner Join,我想获取每位教练的完整数据。
这是我的当前查询
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 个属性时,它确实有效。
例如,这是可行的
SELECT c1.id AS nutrition_coach,
c2.id AS movement_coach,
c3.id AS mental_coach
返回:
mental_coach: 3
movement_coach: 1
nutrition_coach: 2
我是否可以从c1中选择所有字段而不是只选择1个?
这是我想要实现的目标
回复:
{
mental_coach: {
id: 1
name: 'MYNAME'
email '@@@@'
}
movement_coach: {
...
}
nutrition_coach: {
...
}
}
【问题讨论】:
-
要从 c1 中选择所有字段,您应该使用 c1.* 而不是只使用 c1 但是要获得上述响应,您必须为每列指定单独的别名
-
如果您需要 JSON 输出,请考虑使用 MySQL 的 JSON API,或者您可能必须在 Node.js 代码中生成此内容。