我正在为工作构建一个休假请求工具。
我有 3 个表:REQUESTS、COVERED 和 MODID。
请求具有以下字段:
ID INT Auto_Increment not null Primary Key
MODID VARCHAR(7) not null
THE_DATE DATE not null
THE_TIME VARCHAR(30) not null
COVERED CHAR(1) not null Default = 'N'
COVERED 具有以下字段:
ID INT not null Primary Key
CMODID VARCHAR(7) not null
最后 MODID 具有以下字段:
MODID VARCHAR(7) not null Primary Key
MODNAME VARCHAR(40) not null
当在 REQUESTS 中提出休假请求时,会使用 ID (auto_increment) 填充 mod 的 MODID,并将其放入 TOR THE_DATE 中,mod 需要覆盖和他们的班次的 THE_TIME。
我有一个输入上述数据的 PHP 后端。同样的后端,当有人接班时,将 REQUESTS.ID 添加到 COVERED.ID 和覆盖班次的 mod 的 MODID。然后它为该特定班次设置 REQUESTS.COVERED = "Y"。
我可以使用以下命令获取具有活动休假请求的所有 MODS 的列表:
SELECT M.MODNAME, R.THE_DATE, R.THE_TIME
FROM REQUESTS R
INNER JOIN MODID M ON M.MODID = R.MODID WHERE COVERED = 'N';
我遇到的问题是我想获取所有请求的模块列表,这些模块的请求涵盖了他们的请求的日期和时间以及涵盖班次 EG 的模块的名称
请求的 MODNAME 日期时间 覆盖 MODNAME
这是我尝试过的:
SELECT M.MODNAME, R.THE_DATE, R.THE_TIME, C.CMODID
FROM REQUESTS R, COVERED C
INNER JOIN MODID M ON M.MODID = R.MODID
INNER JOIN MODID M ON M.MODID = C.CMODID
WHERE COVERED = 'N';
我知道上面的 MySQL 有很多问题,但我被卡住了,不知道该怎么办。
这是我的 MYSQL 表的 DUMP https://dl.dropbox.com/u/12531574/TOR_2013-02-22.sql
编辑
我能得到的最接近的
使用:
SELECT R.MODID, R.THE_DATE, R.THE_TIME, C.CMODID
FROM REQUESTS R
INNER JOIN COVERED C ON C.ID = R.ID;
输出:
MODID THE_DATE THE_TIME CMODID
AKH3 2013-02-28 10:00AM - 1:00PM PST TST3
我要做的就是将 AKH3 (MODID) 更改为 MODID 表中的相应 MODNAME,并将 TST3 (CMODID) 更改为 MODID 表中的相应 MODNAME。