gpt4 book ai didi

mysql - 多个表之间的多重联接

转载 作者:行者123 更新时间:2023-11-29 14:01:11 25 4
gpt4 key购买 nike

我正在构建一个工作休假请求工具。

我有 3 个表:REQUESTS、COVERED 和 MODID。

REQUESTS 具有以下字段:

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(自动增量)填充模组的 MODID,并将 TOR THE_DATE 放入模组需要的覆盖范围和轮类的 THE_TIME。

我构建了一个 PHP 后端来输入上述数据。同样的后端,当有人接类时,会将 REQUESTS.ID 添加到 COVERED.ID 以及覆盖该类次的 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 表的转储 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。

最佳答案

由于您只是寻找具有覆盖范围的内容,因此您不需要左连接,并且您应该希望有 FK 约束以防止 mod 查找中断。这将为您提供您想要的内容,MODID 表的附加第二个连接将为您提供覆盖 mod 的名称。

SELECT M.MODNAME, R.THE_DATE, R.THE_TIME, CM.MODNAME AS `MOD COVERING NAME`
FROM REQUESTS R
JOIN MODID M ON R.MODID = M.MODID
JOIN COVERED C ON C.ID = R.ID
JOIN MODID CM ON CM.MODID = C.CMODID

我强烈建议您更改表结构,将 CMODID 存储为 mod 的实际整数 ID,因为您的表结构很复杂。

关于mysql - 多个表之间的多重联接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15032780/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com