【发布时间】:2015-09-21 12:56:27
【问题描述】:
我有 3 个表:schedule 和 locations、suites。
时间表的结构:schedule-id, location-id, schedule-completed-on-date
位置结构:location-id、location-building-number、location-street-name
套件结构:suite-id、location-id、suite-number、suite-visited
许多套房可能属于同一地点。日程表的location-id 是唯一的,因此在任何时候都可能只有一个唯一的位置,不能重复。
我想将 schedule-completed-date-on 设置为一个日期,我知道该怎么做,如果日程表行位置的每个套件都有 suite-visited 等于 1(0- 否,1 - 是的)。
是否可以使用 MySQL,如果可以,那么怎么做?还是我必须使用服务器端语言以编程方式完成?
例如,如果我有两个位置 - 1 个 Main St. 和 2 个 Main St. - 总共 10 间套房 - 5 个属于第一个位置,其他 5 个属于第二个位置。如果 MySQL 检测到与第一个位置相关的所有 5 个套件行的 suite-visited 等于 1,则立即将 schedule-completed-on 设置为当前日期,否则不要。
手头数据和预期结果:
LOCATIONS
location-id location-building-number location-street-name
1 1 Main St.
2 2 Main St.
SUITES
suite-id location-id suite-number suite-visited
1 1 100 1
2 1 200 0
3 1 300 0
4 1 400 0
5 1 500 1
6 2 1000 1
7 2 1100 1
8 2 1200 1
9 2 1300 1
10 2 1400 1
SCHEDULE
schedule-id location-id schedule-completed-on-date
1 1 NULL
2 2 7/3/2015 00:00:00
// because all suites for location 2 have suite-visited set to 1
// second row under SCHEDULE gets the date set
// because all suites belonging to
// location 2 have been visited
【问题讨论】:
-
你能分享一些示例记录吗?
-
... 和想要的结果
-
@Nimesh 好的。一瞬间
-
您也许可以使用逆来实现,即如果没有记录的 site-visited =0,则使用 UPDATE 语句和 NOT EXISTS 更新记录
-
有了这样的结构,您可以删除表 'schedule' (schedule_id = location_id) 并将列 'suite-visited-on-date' 添加到套件表中,当您更新该列时将 suite-visited 更新为 1。然后您可以检查每个位置是否有 suite-visited = 0,如果没有则选择最新日期。