【问题标题】:Additional select if one select result is not null如果一个选择结果不为空,则附加选择
【发布时间】:2019-10-11 14:58:03
【问题描述】:

我对表 g 中的结果感兴趣,它与表 sl 共享一个键 sample_name。在这个问题中,表格是
s - 样本,
p - 项目,
l - 分析,以及
g,分析 g,
都在架构a 中。
为了优化起见,我只想在确认l.analysis_gNOT NULL之后再找表g。

Given:我开始时唯一的信息是项目名称。项目表p 通过样本表s 与其他表链接。 s 链接到每个表。表l 包含分析类型,每列是NULL 或1。

在下面的示例中,我正在尝试一个案例,但我意识到这可能完全不正确。

SELECT s.sample_name,
       s.project_name,
       g.*
FROM a.samples s
JOIN a.analyses l
ON s.sample_name = l.sample_name
JOIN a.analysis_g g
ON s.sample_name = g.sample_name
WHERE s.project_name IN (SELECT p.project_name
                     FROM a.projects p
                     WHERE p.project_name_other
                     IN ('PROJ_1',
                     'PROJ_2'))
;

【问题讨论】:

  • 您能否展示您的数据示例和您想要的结果?
  • @daShier 表 g 是我唯一有兴趣返回结果的表。它包含与表sl 共享的sample_id 以及分析结果。

标签: sql subquery notnull


【解决方案1】:

那么也许在 where 子句中?仍然很难理解你想要什么。 . .

SELECT s.sample_name,
       s.project_name,
       g.*
FROM a.samples s
JOIN a.analyses l
ON s.sample_name = l.sample_name
JOIN a.analysis_g g
ON s.sample_name = g.sample_name
WHERE s.project_name IN (SELECT p.project_name
                     FROM a.projects p
                     WHERE p.project_name_other
                     IN ('PROJ_1',
                     'PROJ_2'))
   and l.analysis_g IS NOT NULL
;

作为旁注,我认为您可以加入 p.project_name 并避免使用 where 子句。而且我认为您可能需要一些内部连接——但我不确定。

SELECT s.sample_name,
       s.project_name,
       g.*
FROM a.samples s
JOIN a.analyses l ON s.sample_name = l.sample_name
JOIN a.analysis_g g ON s.sample_name = g.sample_name
JOIN a.projects p ON s.project_name = p.project_name
WHERE p.project_name_other IN ('PROJ_1', 'PROJ_2')
   and l.analysis_g IS NOT NULL

【讨论】:

  • 我只对表 g 中包含与表 sl 共享的 sample_id 的结果以及分析结果感兴趣。 @avery_larry
【解决方案2】:

再次:请举个例子!如果我们不得不猜测,我们将无法帮助,但我会试一试......

如果 l.analysis_g 包含来自表 g 的 ID,那么您可以使用:

    SELECT * FROM g
    JOIN l on g.id = l.analysis_g
    WHERE blah, blah, blah...

我删除了您的 WHERE 子句,因为您没有提供足够的信息来让任何人帮助优化它(如果需要)。

【讨论】:

  • 感谢您的 cmets。 @avery_larry 的回答非常有帮助。这是我第一次发布 SQL 问题;为了改进问题,您能否解释一下哪种类型的示例(内容和演示)在这里最有帮助?
  • @mcbridecaleb 在链接中,您将看到文本格式的表格、文本格式的所需输出以及文本格式的错误输出,并解释了错误原因和需要什么。 stackoverflow.com/questions/57928259/…
猜你喜欢
  • 2014-02-21
  • 2014-10-05
  • 2023-03-18
  • 2013-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多