作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有三个表项目、daily_activity 和completed_works。每个项目可能有不同的日常事件。每一项日常事件,都有几件作品。您可以查看下表以了解整个想法。
项目表:
------------------------------------
| PROJECT_ID | PROJECT_NAME |
------------------------------------
| 1 | PROJ1 |
------------------------------------
| 2 | PROJ2 |
------------------------------------
daily_activity 表:
---------------------------------------------------
| DA_ID | PROJECT_ID | DA_DATE |
---------------------------------------------------
| 1 | 1 | 20/12/2018 |
---------------------------------------------------
| 2 | 1 | 21/12/2018 |
---------------------------------------------------
| 3 | 2 | 23/12/2018 |
---------------------------------------------------
已完成的作品表:
----------------------------------------------------------------------------
| ID | DA_ID | work_code | work_desc |
----------------------------------------------------------------------------
| 1 | 1 | w001 | work desc. 1 |
----------------------------------------------------------------------------
| 2 | 2 | w002 | work desc. 2 |
----------------------------------------------------------------------------
| 3 | 2 | w003 | work desc. 3 |
----------------------------------------------------------------------------
| 4 | 1 | w004 | work desc. 4 |
----------------------------------------------------------------------------
| 5 | 3 | w005 | work desc. 5 |
----------------------------------------------------------------------------
我想根据项目Id获取已完成的作品记录。首先根据项目id搜索da_id,然后根据da_id从已完成的作品中获取记录,主要是我想获取da_date,例如在下表中您可以看到work_code = w001在DA_ID = 1下,已完成DA_DATE = 2018年12月20日。
期望的结果
----------------------------------------------------------------------------
| ID | work_code | work_desc | DA_DATE |
----------------------------------------------------------------------------
| 1 | w001 | work desc. 1 | 20/12/2018 |
----------------------------------------------------------------------------
| 2 | w002 | work desc. 2 | 21/12/2018 |
----------------------------------------------------------------------------
| 3 | w003 | work desc. 3 | 21/12/2018 |
----------------------------------------------------------------------------
| 4 | w004 | work desc. 4 | 20/12/2018 |
----------------------------------------------------------------------------
我已经尝试过,但我不明白如何获取 da_date。这是我的查询
SELECT * FROM completed_works
WHERE DA_ID IN (SELECT D.ID FROM daily_activity as d WHERE PROJECT_ID = 1)
在此查询中,我可以通过使用 IN 子句获取 PROJECT_ID 为 1 下的 DA_ID。但不知道如何获取 DA_DATE。
最佳答案
这通常通过连接表来完成。我总是喜欢这样做:
SELECT *
FROM completed_works, daily_activity, project,
WHERE completed_works.DA_ID = daily_activity.DA_ID AND
aily_activity.PROJECT_ID = project.PROJECT_ID;
这很容易理解。但大多数人实际上会使用 JOIN 语法:
SELECT *
FROM completed_works
JOIN daily_activity ON completed_works.DA_ID = daily_activity.DA_ID
JOIN project ON daily_activity.PROJECT_ID = project.PROJECT_ID;
两个查询是等效的。请参阅:https://dev.mysql.com/doc/refman/8.0/en/join.html
您可以选择所需的列,而不是使用 *
。当您添加连接类型时,连接会变得复杂。上面的连接实际上是内连接。
关于mysql - 如何从三个表中查询如下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51335900/
我是一名优秀的程序员,十分优秀!