如何在 mysql 中使用带有三个表的子查询/连接?

Posted

技术标签:

【中文标题】如何在 mysql 中使用带有三个表的子查询/连接?【英文标题】:How to use a subquery/join with three tables in mysql? 【发布时间】:2014-02-03 17:57:58 【问题描述】:

测试计划

    身份证 testplan_id tcversion_id platform_id

处决

1. id
2. build_id
3. testplan_id
4. tcversion_id
5. platform_id
6. status
7. execution_ts
8. tester_id

构建

1. id
2. testplan_id
3. name
4. active

如上所示,我有三个表。 测试计划表存储所有用例 执行表存储执行相关数据 构建表存储构建相关数据

我想从这些表中检索数据,这样它应该显示 testplan 表中的所有行,如果执行表中有任何执行,并且只有构建表中的构建名称,则对于每一行。

我使用了以下查询

SELECT
tptcv.id,
tptcv.testplan_id,
e.tcversion_id,
tptcv.platform_id,
tptcv.creation_ts,
b.name AS Build_name,
e.status AS status,
e.execution_ts,
e.tester_id
from testplan tptcv
inner join executions e on tptcv.tcversion_id=e.tcversion_id and     tptcv.platform_id=e.platform_id and tptcv.testplan_id=e.testplan_id
inner join builds b on tptcv.testplan_id=b.testplan_id
WHERE
b.active=1 

enter code here

这个查询没有给我预期的结果,因为在此处输入代码所需的计数与测试计划表中的行相比。

如果有人在这种情况下帮助我,我将不胜感激。

提前致谢。

【问题讨论】:

请提供样本数据和所需结果。 嗨,戈登,请给我您的电子邮件,以便我可以向您发送示例数据和所需的结果。我试图将文件/图像附加到此帖子,但由于我是该论坛的新用户并且不允许我附加文件,因此无法这样做。谢谢 您可以将照片上传到文件共享网站,然后将链接粘贴到此处。 请参考这些链接获取所有表的样本数据照片,查询结果和我期待的结果testplanexecutionsbuildsQueryResultExpectedResults 【参考方案1】:

删除WHERE b.active = 1并检查您是否得到预期的答案(因为构建表没有名为active的列)

【讨论】:

我的表中有活动字段,我忘了在我的帖子中提及

以上是关于如何在 mysql 中使用带有三个表的子查询/连接?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL单表的CRUD及多表查询

mysql中,如何向测试人员介绍连接查询和子查询的优劣势?

为啥对三个表的联合 mysql 查询比在不可能的 where 子句上连接更快?

在连接的子查询中重复 WHERE 标准

数据库之MySQL入门(数据查询2)

如何正确使用连接/子查询从多个表中选择数据? (PHP-MySQL)