MySQL查询三个表(还具有顺序和限制)



这是我的表结构:

|----------------|
|    Feedback    |
|----------------|
|id              |
|workout_id      |
|comment (string)|
|----------------|

|----------------|
|    Workout     |
|----------------|
|id              |
|trainable_id    |
|----------------|

|----------------|
|  LiveTraining  |
|----------------|
|id              |
|title (string)  |
|----------------|

锻炼表是一个多晶型物,但这是点。

我需要做的是这个mysql查询:

显示最后5个ivetrainings的所有评论,结果将带来两个列:一个带有livetraining标题,另一个带有答案。

这应该是预期的响应:

|---------|---------|
|  Title  | Comment |
|---------|---------|
| Lorem 1 | Lorem 2 |
| Lorem 1 | Lorem 3 |
| Lorem 4 | Lorem 5 |
| Lorem 6 | Lorem 7 |
|---------|---------|

我试图做这样的事情(没有成功 - 空响应(:

SELECT live_trainings.title, feedbacks.*
FROM workouts
INNER JOIN (select * FROM live_trainings order by id desc limit 5) live_trainings ON workouts.trainable_id = live_trainings.id
INNER JOIN feedbacks ON live_trainings.id = feedbacks.workout_id

还尝试了一些联合所有解决方案,一些 select(select(等。都没有成功。


非常重要:它必须是一个单个查询解决方案,根本没有功能或过程:(

这个问题的理想查询是什么?

看起来您正在加入live_trainings而不是锻炼的反馈。所以尝试:

SELECT live_trainings.title, feedbacks.*
FROM workouts
INNER JOIN (select * FROM live_trainings order by id desc limit 5) live_trainings ON workouts.trainable_id = live_trainings.id
INNER JOIN feedbacks ON workouts.id = feedbacks.workout_id

如果您仍然遇到麻烦,请将INNER JOIN更改为LEFT JOIN并查找空字段。如果表格很大,则可能需要LIMIT结果

最新更新