【问题标题】:SQL: Subselection from two tablesSQL:从两个表中进行子选择
【发布时间】:2018-07-20 05:56:01
【问题描述】:

我正在练习我的 SQL 查询,但我被困在这里。我创建了一堆不同的表,我想要一个检索不同列的表(听起来很冗余)。这里的关键如下:我想从两个不同的表中选择与输出列相关的所有信息。查询的第二个表包含对应于第三个表列的不同属性。

为此,我写了这个:

select   l.output_name,   
         l.output_date,   
         (select *
            from elt.attribute_key
           where attribute = ('a', 'b', 'c')   
         )
  from   etl.output l  
 where   l.version = 'local'  
   and   l.country = 'DE'

它给了我错误,我认为这是由于表之间不存在连接,但我不知道应该在哪里添加。此外,我想知道我处理得当。

感谢您的帮助和时间!

【问题讨论】:

  • 通常情况下,人们会为此使用JOIN
  • 您能否提供一些示例数据以及您期望的输出。在这个阶段,你的问题还不清楚。同样在您的代码中,字段列表中有一个(选择...)。当你拥有它时,你必须确保它返回一个标量值,而不是一组行 - 你不能像这样返回多个列。无论如何,您目前还不清楚要发表更多评论的意图。

标签: sql postgresql


【解决方案1】:

好像,你的意思是CROSS JOIN,所以,使用:

select  l.output_name, l.output_date, 
        a.* 
  from  etl.output l  
  cross join elt.attribute_key a
  where l.version = 'local'  
    and l.country = 'DE'
    and a.attribute in ('a', 'b', 'c');

【讨论】:

    猜你喜欢
    • 2020-06-24
    • 1970-01-01
    • 2014-09-17
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    相关资源
    最近更新 更多