假設我有兩個表部門和人員,以及來自人員表格的work_in與來自部門的id列(如外鍵和主鍵)相同。現在,如果我想要person表中的first_name,last_name和department表中的full_department_name。使用Equi連接可以獲得這樣的結果的CQL是什麼?CQL cassandra加入並從2個不同的表格中選擇多個數據
0
A
回答
1
有關係建模的氣味:)。卡桑德拉沒有加入。提示:保持非規範化以適應查詢。
在Cassandra中,數據模型應該適合訪問模式,並且可以在數據模型複製時複製數據。所以我們不需要將兩個表格設計連接起來,而是使用兩個表格設計來服務不同的查詢模式。
比方說
訪問模式1:給出爲person_id找到他/她的詳細內容部門詳細信息。創建下表以服務該用例
CREATE TABLE department_by_person (person_id int, first_name text, last_name text, dept_id int , PRIMARY KEY (person_id, dept_id));
現在有了爲person_id將得到他的所有細節的查詢請求,包括部門標識。
select * from department_by_person where person_id = ?
訪問模式2:給出的dept_id找到他/她的詳細內容的人的詳細信息。您可以在另一臺由分區鍵來服務這個用例被DEPT_ID
CREATE TABLE person_by_department (person_id int, first_name text, last_name text, dept_id int , PRIMARY KEY (dept_id, person_id));
現在用的dept_id查詢將得到所有他/她的細節要求,包括爲person_id。但請記住,還需要額外的編碼才能使這兩個表保持同步,而這只是根據訪問模式進行復制而已。
select * from person_by_department where dept_id = ?
或者你可以創建一個物化視圖,而不是第二個表,然後卡桑德拉將保持MV同步與表。換句話說,在這裏不需要額外的應用程序工作來保持同步。
create materialized view mv_person_by_department as
select person_id, first_name, last_name, dept_id
from department_by_person
where person_id is not null
and dept_id is not null
primary key (dept_id, person_id);
現在用的dept_id查詢將得到所有他/她的細節要求,包括爲person_id。
select * from mv_person_by_department where dept_id = ?
相關問題
- 1. 選擇一個表並加入2個不同的表
- 2. 從MySQL的2個表中選擇的數據,加入它
- 3. PHP MySQL從2個不同的表中選擇*並顯示合併的數據
- 4. Postgesql從2個表中選擇。加入?
- 5. 加入表格或從多個表格中選擇
- 6. 從兩個不同的表格中選擇數據
- 7. 從2個表中選擇數據
- 8. MySQL從2個表中選擇數據
- 9. 從2個表中選擇數據+ propel
- 10. 從不同列數加入的兩個表中選擇
- 11. 從2個不同的表格中選擇值
- 12. 使用CQL從Cassandra Column中選擇第一個N
- 13. Cassandra CQL 3 - 前綴選擇
- 14. Cassandra Cql範圍選擇
- 15. 從表格中選擇數據,並在另一個表格中輸入條件
- 16. 從子表中選擇2個不同子表的計數
- 17. 從不同欄目和兩個表格中選擇數據
- 18. 選擇並顯示來自2個不同表格的記錄
- 19. 從2個或更多表中獲取數據:選擇還是加入?
- 20. mysql從2個不同的表中選擇並返回最高的價格
- 21. Linq查詢從表中選擇數據並連接2個表
- 22. 加入並選擇多個表格並創建新列名稱
- 23. 加入兩個表格並選擇記錄(表格2)以形成(表格1)並用下拉列表選擇
- 24. 從三個表格中選擇數據
- 25. MySQL:從2個不同的表中選擇不同的?
- 26. 加入2個表格,但只選擇其中一個表格中的行
- 27. 從不同的表中選擇兩個不同的數據並顯示值
- 28. 加入來自多個列和2個表格的數據
- 29. 加入2代表與多個不同
- 30. 從2個MySQL表中加入數據
感謝您的回覆。因此,爲了獲得這種類型的數據,我總是需要創建另一個表並將數據(我需要從給定的表中)插入到它中? –
作爲替代方案,我向您提供了物化視圖選項,以及您無需爲其他表格進行管理/編碼的情況。您需要根據查詢模式開始建模。因此,根據需要解決的查詢來設計表格。 – dilsingi
是的,但MV只會給我人名錶中的名字,姓氏,dept_id,而我希望整個部門名稱位於另一個名爲department的表中。例如。 dept_id是'ET',因此這個id的完整部門名稱是'Education and Training'。我想要全名。 –