我有三个表项目,每天的活动,和完成的工作。每个项目可能有不同的日常活动。每一天的活动,都有几件作品。你可以查看下表来了解整个情况。
项目表:
------------------------------------
| PROJECT_ID | PROJECT_NAME |
------------------------------------
| 1 | PROJ1 |
------------------------------------
| 2 | PROJ2 |
------------------------------------
每日活动表:
---------------------------------------------------
| 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搜索数据id,然后根据数据id从已完成工程中获取记录,主要是我想获取数据日期。例如,在下表中,您可以看到工作代码=w001位于数据id=1下,该数据已完成数据日期=20/12/2018。
期望结果
----------------------------------------------------------------------------
| 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 |
----------------------------------------------------------------------------
我试过了,但我不明白怎么才能得到约会。这是我的问题
SELECT * FROM completed_works
WHERE DA_ID IN (SELECT D.ID FROM daily_activity as d WHERE PROJECT_ID = 1)
在这个查询中,我可以使用in子句获得项目\ id为1下的数据\ id。但我不知道怎么和她约会。
1条答案
按热度按时间olmpazwi1#
这通常是通过连接表来完成的。我总是喜欢这样做:
这很容易理解。但大多数人实际上会使用连接语法:
两个查询是等价的。请参见:https://dev.mysql.com/doc/refman/8.0/en/join.html
您可以选择所需的列,而不必使用
*
. 连接变得复杂的地方是添加连接类型。上面的连接实际上是内部连接。