0

我正在尝试在 Looker 中执行一个子查询,该查询从人员 ID 等于分配给人员 ID 的人员表中返回受让人姓名

我试图做一个限制1,但这只是为每一行中的人返回第一个值

SELECT 
    "ID",

    (SELECT 
        p."NAME"
    FROM 
        view_321782990.person AS p, view_321782990.request AS r 
    WHERE 
        p."ID" = r."ASSIGNEDTOPERSON") 
FROM view_321782990.request

我希望它返回分配给票证的姓名,做

SELECT 
        p."NAME", r."ID"
    FROM 
        view_321782990.person AS p, view_321782990.request AS r 
    WHERE 
        p."ID" = r."ASSIGNEDTOPERSON"

返回我想要的,但是,由于查看器如何解释 SQL,我需要以这种方式执行子查询

4

2 回答 2

0

我认为您可以通过内部查询获得所需的内容,该内部查询由外部查询中的值过滤并将 LIMIT 放回:

SELECT 
    "ID",

    (SELECT 
        p."NAME"
    FROM 
        view_321782990.person AS p, view_321782990.request AS r 
    WHERE 
        p."ID" = r."ASSIGNEDTOPERSON" AND r."ID" = outer_r."ID"
    LIMIT 1
) 
FROM view_321782990.request AS outer_r

哪里request."ID"是一种区分记录的p."ID" = r."ASSIGNEDTOPERSON" 方法这种方法取决于这些表之间的关系,可能并非在所有情况下都可行,这让我想到:

我同意普遍的共识,即这可以在连接中更容易地完成。如果不存在,您可能需要在探索中添加连接,但是一旦视图之间存在连接,您就可以跨视图访问字段,如下所示:

view: request {
  # ... sql_table_name, etc ...
  dimension: person_name {
    sql: ${person.name}
  }
  # ... mode dimensions, measures, etc ...
}

如果您对生成的 sql 的外观有一个清晰的认识,我会在这里查看更多关于looker 如何生成 sql的更多信息,以及关于如何处理连接的更多信息。

于 2019-06-06T01:53:54.103 回答
0

使用连接:

SELECT
  p.name
  , r.id
FROM view_321782990.person p
LEFT JOIN view_321782990.request r ON
  p.id = r.assignedtoperson
于 2019-05-29T20:34:34.553 回答