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

时间:2014-02-03 17:57:59

标签: mysql sql join subquery

测试计划

  1. ID
  2. testplan_id
  3. tcversion_id
  4. 平台_id
  5. 执行

    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表存储所有案例 执行表存储执行相关数据 构建表存储构建相关数据

    我希望以这样一种方式从这些表中检索数据:它应该显示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
    

    此查询没有给出我预期的结果,因为这里输入的代码与testplan表中的行相比需要的计数。

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

    提前致谢。

1 个答案:

答案 0 :(得分:0)

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