我在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,我会很感激你。