2015-12-27 117 views
0

工作当我尝试在谷歌的BigQuery此查询,我得到以下错误:SQL查询不是谷歌的BigQuery

"SELECT query which references non constant fields or uses aggregation functions or has one or more of WHERE, OMIT IF, GROUP 
BY, ORDER BY clauses must have FROM clause." 

这是怎么回事?

SELECT fq.ds_id AS ds_id, 
     fq.dm_id AS dm_id, 
     fq.freq AS freq, 
     rc.rec AS rec, 
     rd.reg AS reg 
FROM dataset.table_fq_ds fq 
    INNER JOIN EACH dataset.table_rc_ds rc ON (fq.ds_id = rc.ds_id) 
    INNER JOIN EACH dataset.table_rd_ds rd ON (fq.ds_id = rd.ds_id); 

回答

0

我希望下面将有助于排除故障

首先选择完美的作品,而第二个给了完全相同的错误

“正确” 版本

SELECT 
    fq.ds_id AS ds_id, 
    fq.dm_id AS dm_id, 
    fq.freq AS freq, 
    rc.rec AS rec, 
    rd.reg AS reg 
FROM (SELECT 1 AS ds_id, 11 AS dm_id, 12 AS freq) fq 
INNER JOIN EACH (SELECT 1 AS ds_id, 22 AS rec) rc ON (fq.ds_id = rc.ds_id) 
INNER JOIN EACH (SELECT 1 AS ds_id, 33 AS reg) rd ON (fq.ds_id = rd.ds_id); 

ds_id dm_id freq rec reg 
    1  11  12  22 33 

,错误版本 - 只有第一个INNER:
SELECT ds_id VS SELECT 1 AS ds_id

SELECT 
    fq.ds_id AS ds_id, 
    fq.dm_id AS dm_id, 
    fq.freq AS freq, 
    rc.rec AS rec, 
    rd.reg AS reg 
FROM (SELECT 1 AS ds_id, 11 AS dm_id, 12 AS freq) fq 
INNER JOIN EACH (SELECT ds_id, 22 AS rec) rc ON (fq.ds_id = rc.ds_id) 
INNER JOIN EACH (SELECT 1 AS ds_id, 33 AS reg) rd ON (fq.ds_id = rd.ds_id); 

Error: SELECT query which references non constant fields or uses aggregation functions or has one or more of WHERE, OMIT IF, GROUP BY, ORDER BY clauses must have FROM clause.

+0

你的第二个查询好像它实际上是正确的错误 - AS rec'指现场'ds_id'但没有按”'选择ds_id,22给它一个不变的价值或者说它来自哪个表。 –

+0

这就是要点 - 显示如何引入这样的错误 –

+0

对不起,我不明白你的答案,我不能再看到我的dataset.tables在你的代码。我不认为我的查询没有问题。我认为这是一个更大的问题。 – sweeeeeet