【发布时间】:2016-02-05 18:00:46
【问题描述】:
我有两张桌子 - Client 和 Banquet
Client Table
----------------------------
ID NAME
1 John
2 Jigar
3 Jiten
----------------------------
Banquet Table
----------------------------
ID CLIENT_ID DATED
1 1 2016.2.3
2 2 2016.2.5
3 2 2016.2.8
4 3 2016.2.6
5 1 2016.2.9
6 2 2016.2.5
7 2 2016.2.8
8 3 2016.2.6
9 1 2016.2.7
----------------------------
:::::::::: **Required Result**
----------------------------
ID NAME DATED
2 Jigar 2016.2.5
3 Jiten 2016.2.6
1 John 2016.2.7
要生成的结果是这样的
1. 未来的日期:接近或等于当前日期,与相应客户进一步相关的日期应按
所需结果中给出的格式进行过滤和排序强> 当前案例的 CURDATE() 是 5.2.2016
失败:查询逻辑 1
SELECT c.id, c.name, b.dated
FROM client AS c, banquet AS b
WHERE c.id = b.client_id AND b.dated >= CURDATE()
ORDER BY (b.dated - CURDATE());
------------------------------------------- OUTPUT
ID NAME DATED
2 Jigar 2016.2.5
2 Jigar 2016.2.5
3 Jiten 2016.2.6
3 Jiten 2016.2.6
1 John 2016.2.7
2 Jigar 2016.2.8
2 Jigar 2016.2.8
1 John 2016.2.9
失败:查询逻辑 2
SELECT c.id, c.name, b.dated
FROM client AS c, banquet AS b
WHERE b.dated = (
SELECT MIN(b.dated)
FROM banquet as b
WHERE b.client_id = c.id
AND b.dated >= CURDATE()
)
ORDER BY (b.dated - CURDATE());
------------------------------------------- OUTPUT
ID NAME DATED
2 Jigar 2016.2.5
2 Jigar 2016.2.5
3 Jiten 2016.2.6
3 Jiten 2016.2.6
1 John 2016.2.7
UPDATE :要生成的进一步结果是这样的
2. 客户 WITHOUT : DATED 也应列出:可能为 NULL
3.BANQUET表中除DATED以外的信息也需要列出
更新所需结果
ID NAME DATED MEAL
2 Jigar 2016.2.5 lunch
3 Jiten 2016.2.6 breakfast
1 John 2016.2.7 dinner
4 Junior - -
5 Master - supper
【问题讨论】:
-
“饭”从何而来?鉴于您在回答问题后对问题进行了重大更改,您可能希望针对“NULL”案例和“膳食”组件发布一个单独的问题。
-
@Stidgeon 我也很困惑,我应该在同一个问题还是在新问题中问这个问题。但现在我认为新问题是一个好方法..