我正在研究轮班安排解决方案,需要您的帮助。数据库布局如下所示:数据库布局
我获取一个月的所有时间表的查询如下所示:
SELECT
ca.date,
ss.num,
ma.name
FROM dp_dienstplan AS dp
JOIN ma_mitarbeiter AS ma ON ma.id=dp.dp_mitarbeiter_id
JOIN ss_schienen AS ss ON ss.id=dp.dp_schienen_id
JOIN sc_schicht AS sc ON sc.id=ss.ss_schicht_id
RIGHT JOIN calendar AS ca ON ca.date=dp.dp_datum
WHERE
month(ca.date)=9 AND year(ca.date)=2013
日历表是一个辅助表,其中包含未来几年的日期,以便在没有待定计划的结果中获得偶数天。
查询的结果如下所示:
date |num |name
----------------------------
2013-09-01 NULL NULL
2013-09-02 2 foo
2013-09-02 3 bar
2013-09-03 2 uncle
2013-09-03 1 mac
2013-09-03 7 super
2013-09-04 NULL NULL
2013-09-04 2 master
.
.
.
2013-09-30 NULL NULL
我梦寐以求的结果是这样的:
date |1num |1name |2num |2name |3num |3name. . .|7name|7num
-----------------------------------------------------------------
2013-09-01 NULL NULL NULL NULL NULL NULL . . . NULL NULL
2013-09-02 NULL NULL 2 foo 3 bar . . . NULL NULL
2013-09-03 1 mac 2 uncle NULL NULL . . . 7 super
2013-09-04 NULL NULL 2 master NULL NULL . . . NULL NULL
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
2013-09-30 NULL NULL NULL NULL NULL NULL . . . NULL NULL
每天应该有一行,名称和“num”值的顺序。我希望你明白我在说什么,对不起我的英语。
我有另一个帮助表,其中包含从 1 到 200 的值,我试图右加入,但我没有成功。
在此先感谢,抱歉,如果这是一个重复的问题,我没有在谷歌或论坛上找到任何结果,也许是因为我不知道要搜索什么。
干杯,拉尔夫。