mysql子查询无法引用顶级表

时间:2017-08-05 13:14:52

标签: mysql subquery

我在MySQL数据库中有下表/列排列。 (FK表示外键)

SCHEDULES          [id(INT), next_date(DATE), notification_id(FK)]
NOTIFICATIONS      [id(INT), col_1(...), col_2(...), ...]
NOTIFICATION_LINES [id(INT), notification_id(FK), no_of_days(INT)]

关系

多个 SCHEDULES可以具有相同的NOTIFICATION(即n:1),而 One NOTIFICATION可以有多个{{1} }}

示例数据集

NOTIFICATION_LINES

要求

我需要获取特定SCHEDULES ------------------------------------- | id | next_date | notification_id | ------------------------------------- | 1 | 07-08-2017 | N01 | | 2 | 18-08-2017 | N01 | ------------------------------------- NOTIFICATIONS ----------------------- | id | col_1 | col_2 | ----------------------- | N01 | AA | XX | | N02 | BB | YY | ----------------------- NOTIFICATION_LINES -------------------------------------- | id | notification_id | no_of_days | -------------------------------------- | 1 | N01 | 14 | | 2 | N01 | 5 | ------------------------------------- 的{​​{1}}。

我使用了以下子查询:

MAX(no_of_days)

然后它返回:

SCHEDULE

如果我用SELECT sch.schedule_id, sch.notification_id, x.max_no_of_days FROM SCHEDULES sch, (SELECT nt.notification_id, max(lt.no_of_days) AS max_no_of_days FROM NOTIFICATION_LINES lt, NOTIFICATIONS nt WHERE lt.parent_id = nt.id AND nt.notification_id = sch.notification_id) x WHERE sch.notification_id = x.notification_id; 替换值,则会返回正确的结果。

#1054 - Unknown column 'sch.notification_rule' in 'where clause'

如果我不能使用父查询的别名,如果有人能让我知道一个不同的SQL,我会很感激你。

0 个答案:

没有答案