Mysql 如何在Cube.js中实现间接连接?
我可能误解了Mysql 如何在Cube.js中实现间接连接?,mysql,cube.js,Mysql,Cube.js,我可能误解了cube.js联接,但在SQL中,我可以从被这样一个表删除的表中进行联接: SELECT * FROM a LEFT JOIN b ON a.name = b.name LEFT JOIN c ON b.state = c.state; 我的问题是:如何在cube.js中实现这一点 我尝试用以下模式(及其一些变体)重新创建上面的内容: cube(`A`{ sql:`SELECT*从`, 加入:{ B:{ sql:`${A}.name=${B}.name`, 关系:`belongsT
cube.js
联接,但在SQL中,我可以从被这样一个表删除的表中进行联接:
SELECT * FROM a
LEFT JOIN b ON a.name = b.name
LEFT JOIN c ON b.state = c.state;
我的问题是:如何在cube.js
中实现这一点
我尝试用以下模式(及其一些变体)重新创建上面的内容:
cube(`A`{
sql:`SELECT*从`,
加入:{
B:{
sql:`${A}.name=${B}.name`,
关系:`belongsTo`,
},
C:{
sql:`${B}.state=${C}.state`,
关系:`belongsTo`,
},
},
尺寸:{
身份证:{
sql:`id`,
类型:`number`,
primaryKey:没错,
},
姓名:{
sql:`${B}.name`,
类型:`string`,
},
声明:{
sql:`${C}.state`,
类型:`string`,
},
},
});
其中还定义了立方体B
和C
,包括此处使用的尺寸
但是,以下查询:
维度:[`A.state`];
抛出错误:
Error: ER_BAD_FIELD_ERROR: Unknown column 'b.state' in 'on clause'
我很可能会错过显而易见的,如果有任何提示,我将不胜感激。事实证明,以下
B
到C
连接:
连接:{
//...
C:{
sql:`${B}.state=${C}.state`,
关系:`belongsTo`,
},
},
需要在多维数据集B
中发生,而不是在多维数据集A
中发生。原因似乎是多维数据集引用了其他多维数据集,而不是在后台构建持久表
这也解释了为什么来自联接表的维度仍然需要指向表示联接表的多维数据集,例如上面问题代码中的状态
维度:
状态:{
sql:`${C}.state`,
类型:`string`,
},