从Cassandra CQL中的多个表中选择

从Cassandra CQL中的多个表中选择,cassandra,nosql,cql,cql3,cqlsh,Cassandra,Nosql,Cql,Cql3,Cqlsh,因此,我使用的查询中有两个表: SELECT R.dst_ap, B.name FROM airports as A, airports as B, routes as R WHERE R.src_ap = A.iata AND R.dst_ap = B.iata; 但是,它抛出了错误: mismatched input 'as' expecting EOF (..., B.name FROM airports [as] A...) 在Cassandra CQL中,我是否可以做

因此,我使用的查询中有两个表:

SELECT
    R.dst_ap, B.name
FROM airports as A, airports as B, routes as R
WHERE R.src_ap = A.iata
AND R.dst_ap = B.iata;
但是,它抛出了错误:

mismatched input 'as' expecting EOF (..., B.name    FROM airports [as] A...)

在Cassandra CQL中,我是否可以做我试图做的事情(这就是它的工作关系?

简单的回答是,Cassandra中没有连接。时期因此,使用基于SQL的联接语法将产生一个类似于您上面发布的错误

Cassandra(或任何分布式数据库)的想法是确保查询可以由单个节点提供(减少网络时间)。实际上,没有办法保证可以从单个节点查询来自不同表的数据。因此,分布式连接通常被视为反模式。为此,卡桑德拉根本不允许这样做


在Cassandra中,您需要采用基于查询的建模方法。因此,您可以通过从post join结果集中构建一个表来解决这个问题,该表由所需的
dst_ap
name
组合组成。您必须找到一种适当的方法来划分此表,但最终您需要基于A)您希望看到的结果集和B)您希望在WHERE子句中过滤的属性来构建它。

简单的回答是,Cassandra中没有联接。时期因此,使用基于SQL的联接语法将产生一个类似于您上面发布的错误

Cassandra(或任何分布式数据库)的想法是确保查询可以由单个节点提供(减少网络时间)。实际上,没有办法保证可以从单个节点查询来自不同表的数据。因此,分布式连接通常被视为反模式。为此,卡桑德拉根本不允许这样做


在Cassandra中,您需要采用基于查询的建模方法。因此,您可以通过从post join结果集中构建一个表来解决这个问题,该表由所需的
dst_ap
name
组合组成。您必须找到一种适当的方法来划分这个表,但最终您可能希望基于A)您希望看到的结果集和B)您希望在WHERE子句中过滤的属性来构建结果集。

有什么方法可以从我的表中已有的数据构建此结果集吗?@madcrazydrumma与Cassandra的本质不同,不。但您可能会编写一个Python脚本来查询表,执行客户端连接,然后将其写入Cassandra。有没有方法可以从我的表中已有的数据构建此结果集?@madcrazydrumma本质上不支持Cassandra。但您可能会编写一个Python脚本来查询表,执行客户端连接,然后将其写入Cassandra。