2016-07-23 62 views
2

我是卡桑德拉的新手,我来自Postgres。我想知道是否有方法可以从2个不同的表或列族中获取数据,然后返回结果。我有这个疑问卡桑德拉我如何模拟加入语句

select p.fullname,p.picture s.post, s.id, s.comments, s.state, s.city FROM profiles as p INNER JOIN Chats as s ON(p.id==s.profile_id) WHERE s.latitudes>=28 AND 29>= s.latitudes AND s.longitudes 
    ">=-21 AND -23>= s.longitudes 

查询有2个表:配置文件和聊天,他们都有着共同的场Chats.id == Proifles.profile_id它归结为这基本上返回所有行聊天ID是等于个人资料ID。我想保持这种方式,因为现在更新配置文件很简单,只需要更新每个配置文件更新1行,而不是将所有内容解除规范化并更新数千条记录。任何帮助或建议将是伟大的

回答

2

你必须设计表的方式,你将不需要连接。最佳做法是如果您的表完全匹配它所用的用例。

Cassadra有一个名为shared static columns的功能;这允许您将值与主键的分区部分绑定。因此,你可以创建没有重复的“连接”版本的表。

CREATE TABLE t (
    p_id uuid, 
    p_fullname text STATIC, 
    p_picture text STATIC, 
    s_id uuid, 
    s_post text, 
    s_comments text, 
    s_state text, 
    s_city text, 
    PRIMARY KEY (p_id, s_id) 
); 
+0

非常感谢您的完美 – user1591668